KlavyeSende.CoM
Ekim 11, 2008, 11:26:01 ÖS *
Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz
  KlavyeSende.Com | Artık Klavye Sende !
 
Ana Sayfa Yardım Ara Admin Admin Admin Giriş Yap Kayıt  
Sayfa: [1]
  Yazdır  
Gönderen Konu: Pascal da Sıralama Algoritmaları  (Okunma Sayısı 277 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
Ocak 22, 2007, 06:09:21 ÖS  |  Uyarı : Dikkat bu Administrator mesajıdır |
ChaR
Administrator
********

Üye Bilgileri
Üye ID: 1

Mesaj Sayısı: 2601

Nerden: Bilmem Sence Nerden ;)

Cinsiyet: Bay

Rep : 136
Online Online

« Not Found Keyboard »

Durumum:


Üyelik Bilgileri WWW

Resimlerin Görüntülenmesine İzin Verilmiyor
Resimleri Görebilmek İçin Üye Ol veya Giriş Yap

Sıralama Algoritaları

Sıralama,sayısal ortamdaki bilgilerin veya verilerin belirli bir anahtar sözcüğe göre belirli bir anlamda sıralı erişilmesini sağlayan düzenlemedir. Bilgisayar yazılım uygulamalarında ve donanım tabanlı sayısal sistem çözümlemelerinde bilgilerin/verilerin sıralı olması, bilgiye erişimi sağlayacak , bilgiyi kullanacak programlara ait algoritmaların gerçekleştirilmesini kolaylaştırır,sadeleştirir ve işlemin daha hızlı yapılmasını sağlar. Bu nedenle , ister donanım olsun ister yazılım olsun rastgele sırada gelen /oluşan bilgilerin sıralanması bilgisayar ve benzeri sayısal sistemlerde gereksinim duyukan önemli bir olgudur. Çok değişik sıralama algoritmaları vardır; herbiri uygulamaya bağlı olarak en iyi çözüm olabilmektedir; seçilen veri modeli, kümedeki toplam veri sayısı, bilgilerin geliş sırası gibi özellikler kullanılacak sıralama algoritmasını belirler . Sıralama algoritmaların bazıları:



Kabarcık Sıralaması (Bubble Sort)
Seçmeli Sıralama (Selection Sort)
Birleşmeli sıralama (Merge Sort)
Hızlı Sıralama (Quick Sort)


1. Kabarcık Sıralaması(Bubble sort):

Bu sıralama şeklinde hereleman kendisinden bir sonraki elemanla test ediliyor. Verilen şartın küçük yada büyük olma durumuna göre şarta uyan elemanların yerleri değiştiriliyor. Bu sıralama yönteminde işlem aşağıdaki gibi yapılır:

eleman ile 2. eleman test edilir. Şart sağlandığında dizi içerisindeki yerleri değiştirilir.
eleman ile 3. eleman test edilir. Şart sağlandığında dizi içerisindeki yerleri değiştirilir...
Bu işlem dizi sonuna kadar devam eder. Eğer baştan sona kadar hiçbir yer değiştirme işlemi yapılmamışsa dizi sıralanmıştır demektir. Aksi halde dizinin başından itibaren test işlemine devam edilir.

Örnek: Dışarıdan girilen N elemalı bir diziyi küçükten büyüğe doğru bubble sort yöntemi ile sıralayın
çözüm:
program buble_short;
uses wincrt;
var
b,i,n,c:integer;
tamam:boolean;
a:array[1..100] of integer;
begin
write('diziniz kaç elemanli...:');readln(n);
writeln;
writeln('dizinin elemanlarini giriniz');
for i:=1 to n do begin gotoxy(4*i,4) ; read (a); end; repeat
tamam:=true;
for i:=2 to n do
if a<a[i-1] then
begin
c:=a;
a:=a[i-1];
a[i-1]:=c;
tamam:=false;
end;
until tamam= true;
writeln('sırali dizimiz');
for i:=1 to n do
write(a:3);
end.

2.Seçmeli Sıralama (Selection Sort):

Bu algoritmada dizinin bir ucundan başlanır; başından veya sonundan olabilir. Örneğin dizinin başından başladığı ve küçükten büyüğe doğru sıralama yapılacağı varsayılırsa algoritmanın davranışı şöyledir: Önce ilk eleman alınır ve daha sonra dizinin içerisindeki en küçük eleman aranır; bulunduğu zaman ilk eleman ile yer değiştirilir; daha sonra ikinci eleman alınır ve bu eleman dahil kalan elemanlara arasında ikinci küçük eleman aranır ve ikinci elemanla yer değiştirilir. Bu işlem dizinin son elemanına kadar tekrarlanırsa dizi sıralanmış olur.
Örnekışarıdan girilen N elemalı bir diziyi küçükten büyüğe doğru Selection sort yöntemi ile sıralayın
Çözüm:

program selection_sort ;
uses wincrt;
var
n,i,yer,j,kck,m:integer;
a:array[1..100] of integer;
begin
write('diziniz kaç elemanli...:'); read(n) ;
writeln('dizinin elemanlarini giriniz');
for i:=1 to n do read(a);
for i:=1 to n do
begin
kck:=a;
yer:=i;
for j:=1 to n do
begin
if a[j]>kck then
begin
kck:=a[j];
yer:=j;
m:=a;
a:=a[yer];
a[yer]:=m
end;
end ;
end;
writeln('dizinin sirali şekli...:');

for i:=1 to n do write (a:4);
end.

3. Birleşmeli Sıralama (Merge Sort );
İki sıralı diziyi tek bir dizide sıralamak için kullanılır.
örnek: Dışarıdan girilen N elemanlı küçükten büyüğe doğru sıralı bir A dizisi ile M elemanlı küçükten büyüğe doğru sıralı bir B dizisini(MERGE SORT) Yöntemi ile N+M elemanlı bir C dizisine sıralı olarak yerleştiren program?
PROGRAM

program merge_sort;
uses wincrt;
var
ia,ib,n,m,ic,j:integer;
a,b,c:array[1..100] of integer;
begin
clrscr;
writeln('1. dizi kaç elemanli'); read(n);
writeln('1. dizinin elemanlarini giriniz');
for ia:=1 to n do read(a[ia]);
writeln('2. dizi kaç elemanli'); read(m);
writeln('2. dizinin elemanlarini giriniz');
for ib:=1 to m do read(b[ib]);
ia:=1; ib:=1 ; ic:=1;
while(ia<=n) and (ib<=m) do
begin
if a[ia]<b[ib] then
begin
c[ic]:=a[ia];
ia:=ia+1;
end
else
begin
c[ic]:=b[ib];
ib:=ib+1;
end;
ic:=ic+1;
end;
if ia>n then
begin
for j:=ib to m do
begin
c[ic]:=b[j];
ic:=ic+1;
end;
end
else
begin
for j:=ia to n do
begin
c[ic]:=a[j];
ic:=ic+1;
end;
end;
for ic:=1 to n+m do
write (c[ic]:4);
end.



Hızlı Sıralama (Quick Sort):
Hızlı sıralama algoritması böl ve yönet (divide and conquer) politikasına dayanır; sıralanması istenen dizi belirli bir sınır (pivot) değerine göre iki alt diziye ayrılır. İkiye ayırma işlemi , bu sınır sayısından küçük olan elemanlar bir tarafa , büyük olan elemanlar diğer tarafa toparlanarak yapılır. Daha sonra , yine hızlı sıralama algoritması kullanılarak , bu iki alt dizinin sıralanması istenir.

Örnek: Dışarıdan girilen N elemanlı diziyi küçükten büyüğe doğru sıralayınız.

Program Quick_sort;
uses wincrt; { turbo pascal için crt}
type
dizi=array[1..100] of integer;
var
a:dizi;
i,n:integer;
procedure Quick(var a:dizi; alt,ust:integer);
procedure Qsort(l,r:integer);
var
i,j,x,y:integer;
begin
i:=1;
j:=r;
x:=a[(l+r) div 2 ];
repeat
while a<x do i:=i+1;
while x<a[j] do j:=j-1;
if i<=j then
begin
y:=a; a:=a[j]; a[j]:=y;
i:=i+1; j:=j-1;
end;
until i>j;
if l<j then Qsort(l,j);
if i<r then Qsort(i,r);
end;
begin
Qsort(alt,ust);
end;
begin
write('diz kaç elemanli...:');
readln(N);
for i:=1 to n do
begin
write('A[',i,']='); readln(a);
end;
Quick(A,1,N);
writeln;
for i:=1 to n do write(a:5);
readln;
end.


ALINTIDIR..
Logged

Resimlerin Görüntülenmesine İzin Verilmiyor
Resimleri Görebilmek İçin Üye Ol veya Giriş Yap

Herkes dalgasına baksın ,
Ama benim dalgamda boğulmasın ,
Bilsin ki yüz verip adam ettiysem ,
Sıfırla çarpar , yok ederim ,
Bu saatten sonra uğraşmam ,
Dünümle ve dünümdekilerle ,
Ben yarına bakarım yanımdakilerle...
Ağustos 01, 2007, 11:43:36 ÖÖ
wind_144
Klavyenin Ustası
*****

Üye Bilgileri
Üye ID: 60

Mesaj Sayısı: 959

Nerden:

Cinsiyet: Bay

Rep : 63
Offline Offline

Durumum:


Üyelik Bilgileri


Teşekkürler......
Logged

BIR YILDIZ DAHA KAYDI......
Ekim 30, 2007, 02:30:04 ÖS
anaconda_
BanneD
*
Avatar Yok

Üye Bilgileri
Üye ID: 2214

Mesaj Sayısı: 1911

Nerden: anaconda'nın yanından

Cinsiyet: Bay

Rep : 25
Offline Offline

AnaCoNDaa

Durumum:


Üyelik Bilgileri WWW


TşqLeR..
Logged
Mayıs 08, 2008, 07:21:38 ÖS
FaTMa
Klavyem Süper
***

Üye Bilgileri
Üye ID: 7308

Mesaj Sayısı: 142

Nerden:


Rep : 3
Offline Offline

Durumum:


Üyelik Bilgileri


Teşekkürler yha çok yardımcı oldu Alkis
Logged
Sayfa: [1]
  Yazdır  
 
Gitmek istediğiniz yer:  

MySQL ile Güçlendirildi PHP ile Güçlendirildi Powered by SMF 1.1.2 | SMF © 2006, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks
XHTML 1.0 Geçerli! CSS Geçerli!
eXTReMe Tracker