itprogrammingandlinux

Just another WordPress.com site

buble, insertion, selection, shell, max/min, quick, merge sort

leave a comment »

Sort adalah proses pengurutan data yang sebelumnya acak menjadi data yang tersusun secara teratur.

Pengurutan dapat dilakukan dengan 2 cara :

–          ascending (naik)

–          descending (turun)

Metode pengurutan data :

1. pengurutan berdasarkan perbandingan

-buble sort dan exchange sort: pengurutan berdasarkan prioritas

-selection sort dan heap sort: pengurutan berdasarkan penyisipan dan penjagaan

-insertion sort dan tree sort: pengurutan berdasarkan pembagian dan penguasaan

-quick sort dan merge sort: pengurutan berkurang menurun

-shell sort

Buble sort

Membandingkan elemen yang sekarang dengan elemen yang berikutnya, jika elemen sekarang > elemen berikutnya, maka tukar.

Contoh procedure tukar data :

Procedure asc_buble (var data :array; jmldata:integer);

Var

i,j : integer;

begin

for i := 2 to jmldata do

for j :=jmldata downto i do

if data [j] <  data [j-1] then

tukardata (data[j], data [j-1] ) ;

end;

Exchange sort

Exchange sort itu sangat mirip dengan buble sort. Bahkan banyak yang mengatakan bahwa exchange sort sama dengan buble sort.

Perbedaannya terdapat dalam hal bagaimana membandingkan antar elemen-elemennya :

Exchange sort Buble sort
– Membandingkan suatu elemen dengan elemen-elemen yang lainnya dalam array tersebut.- Melakukan pertukaran elemen jika perlu.

– Jadi ada elemen yang selalu menjadi elemen pusat (pivot).

– Membandingkan elemen pertama atau terakhir dengan elemen sebelumnya / sesudahnya.- Kemudian elemen tersebut akan menjadi pusat (pivot) untuk dibandingkan dengan elemen sebelum / sesudahnya lagi.

– Begitu seterusnya

Contoh procedure exchange sort :

=======================================================

Procedure asc_buble (var data :array; jmldata:integer);

Var

i,j : integer;

begin

for i := 2 to jmldata do

for j :=jmldata downto i do

if data [j] <  data [j-1] then

tukardata (data[j], data [j-1] ) ;

end;

=======================================================

Selection Sort

Membandingkan elemen yang sekarang dengan elemen yang berikutnya sampai dengan elemen yang terakhir. Jika ditemukan elemen yang lebih kecil, maka dicatat posisinya. Namun jika ditemukan elemen terkecil, maka dicatat posisinya dan kemudian di TUKAR dengan elemen sekarang.

Contoh procedure selection sort secara ascending :

=======================================================

Procedure asc_selection;

Var

Min,pos : byte;

Begin

For i:= 1 to max-1 do

Begin

Pos :=i ;

For j := i+1 to max do

If data [j] < data [pos] then pos :=j;

If i <> pos then tukardata (data[i] , data[pos] );

End;

End;

=======================================================

Insertion Sort

Pengurutan dilakukan dengan cara membandingkan data ke – i dengan data berikutnya, (dimana i dimulai dari data di index ke 1 sampai dengan data terakhir). Jika ditemukan data yang lebih kecil maka data tersebut disisipkan ke depan sesuai dengan posisi yang seharusnya, dan saat ada elemen yang disispkan, maka elemen-elemen lainnya akan bergeser kebelakang.

Contoh procedure insertion sort ascending :

=======================================================

Procedure asc_insert;

Var

i, j, temp : byte;

begin

for i := 2 to max do

begin

temp := data [i] ;

j :=i-1;

while (data [j] > temp ) and (j>0) do

begin

data [j+1] := data [j];

dec (j) ;

end;

data [j+1] := temp ;

end;

end;

=======================================================

Shell Short

Merupakan proses pengurutan data yang sebelumnya acak menjadi data yang terurut dengan cara menentukan jarak antar elemen yang akan dibandingkan.

Quick Sort

Merupakan proses penyusunan elemen yang membandingkan suatu elemen (pivot) denan elemen yang lain, dan menyusunnya sedemikian rupa sehingga elemen –elemen lain yang lebih kecil dari pivot terletak disebelah kiri pivot. Dan elemen yang lebih besar dari pivot terletak disebelah kanan pivot.

Dengan demikian akan terbentuk dua sublist, yang terletak disebelah kanan dan kiri pivot.

Lalu pada sublist kiri dan kanan itu kita anggap sebuah list baru, dan kita kerjakan proses yang sama seperti yang sebelumnya.

Demikian seterusnya sampai tidak terdapat sublist lagi.

Contoh procedure quick sort secara ascending :

=======================================================

Procedure asc_quick (l , r :integer) ;

Var

i, j : integer;

begin

if l < r then

begin

i := l ;    j := r+1;

repeat

repeat inc (i) until data [i] >= data [l] ;

repeat dec (j) until data [j] <= data [l] ;

if i<j then tukardata (data [i], data [j]) ;

until i>j ;

tukardata (data [l], data [j] );

asc_quick (l, j-1);

asc_quick (j+1, r);

end;

end;

=======================================================

Merge Sort

Merupakan proses pengurutan data yang menggunakan merging dua buah vector. Pada proses merge sort, data dibuat sepasang-sepasang, yang terdiri dari dua elemen. Jika N ganjil, maka ada satu vector yang terdiri dari 1 elemen. Lalu kemudian data tersebut di merging sampai terurut.

Radix Sort

Merupakan proses pengurutan data dengan mengelompokkan nilai-nilai. Nilai-nilai tersebut dikelompokkan secara bertahap, dan pada setiap tahapnya nilai-nilai dikelompokkan berdasarkan posisi angka (satuan, puluhan, ratusan, dst.).

Written by itprogrammingandlinux

May 22, 2011 at 3:37 pm

Posted in Uncategorized

Leave a comment