IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   Delphi (https://www.ircforumlari.net/delphi/)
-   -   Delphi sıralama algoritmaları (https://www.ircforumlari.net/delphi/343219-delphi-siralama-algoritmalari.html)

Slipknot 07 Temmuz 2010 20:13

Delphi sıralama algoritmaları
 
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.

Kod:

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 ***oxy(4*i,4) ; read (a); end; repeat
tamam:=true;
for i:=2 to n do
if a 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: dışarıdan girilen N elemalı bir diziyi küçükten büyüğe doğru Selection sort yöntemi ile sıralayın

Kod:

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?

Kod:

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] 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.

4. 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.

Kod:

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 while x 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 if i 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.

Alıntıdır.
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 22:22.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk