SORTING ( PENGURUTAN DATA )

SORT (pengurutan data)

DEFENISI SORT

Sort adalah proses pengurutan data yang sebelumnya disusun secara acak sehingga menjadi tersusun secara teratur menurut suatu aturan tertentu. Pada umumnya terdapat 2 jenis pengurutan :

1.Ascending ( Naik )

2.Descending ( Turun )

CONTOH PENGURUTAN DATA:

1.Data acak :5 6 8 1 3 25 10

2.Terurut/Ascending : 1 3 5 6 8 10 25

3.Terurut/Descending : 25 10 8 6 5 3 1

Metode Pengurutan Data

Untuk melakukan proses pengurutan tersebut dapat digunakan berbagai macam cara / metoda. Beberapa pengurutan data(sorting) diantaranya :

1.BUBLE / EXCHANGE SORT

2.SELECTION SORT

3.INSERTION SORT

4.QUICK SORT

1.Bubble / Exchange Sort

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

Proses Pengurutan

Data paling akhir dibandingkan dengan data di depannya, jika ternyata lebih kecil maka tukar. Dan pengecekan yang sama dilakukan terhadap data yang selanjutnya sampai dengan data yang paling awal.

Procedure Tukar Data

Procedure TukarData(var a,b : integer);

Var c : word;

Begin

c:=a;

a:=b;

b:=c;

end;

Contoh Procedure Bubble

Procedure Asc_Bubble;

Var i,j,k : integer;

Begin

For i:= 2 to jmldata do

begin

For j:= jmldata downto I do

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

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

end;

end;

2.SELECTION SORT

Membandingkan elemen yang sekarang dengan elemen yang berikutnya sampai dengan elemen yang terakhir. Jika ditemukan elemen lain yang lebih kecil dari elemen

sekarang maka dicatat posisinya dan kemudian ditukar. Dan begitu seterusnya.

Procedure Selection

Procedure Asc_Selection;

Var pos ,k: byte;

Begin

For i:= 1 to jmldata-1 do

Begin

Pos:=i;

For j:= i+1 to jmldata do

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

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

end;

Kita bisa mencobanya dengan menggunakan program java/eclipse

seperti dibawah ini:

public class SELECTION_SORT {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] data = {100, 300, 750, 900, 54, 8, 9, 1, 2};

System.out.println(“Masukkan data acak”);
for(int i = 0; i < data.length;i++) {
System.out.print(data[i] +”  ,  “); }

for (int i = data.length-1;i >= 1;i–) {
int idxMax = 0;
for (int j = 1; j<=i;j++) {
if(data[j] > data[idxMax]) {
idxMax = j;
}

}
int temp = data[idxMax];
data[idxMax] = data[i];
data[i] = temp;
}
System.out.println(“\n————————–“);
System.out.println(“data yang sudah diurutkn dengan selection sort”);

for (int i=0; i < data.length; i++) {
System.out.print(data[i]  +  ”  ,   “);
}

}

}

3.INSERT SORT

Pengurutan dilakukan dengan cara membandingkan data ke-I (dimana I dimulai dari data ke-2 sampai dengan data terakhir) dengan data berikutnya. Jika ditemukan data yang lebih kecil maka data tersebut disisipkan ke depan sesuai posisi yang seharusnya.

Prosedure Insert Sort

procedure asc_insert;

var temp,k:integer;

begin

For i := 2 to jmldata 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;

4.QUICK SORT

Membandingkan suatu elemen (disebut pivot) dengan elemen yang lain dan menyusunnya sedemikian rupa sehingga elemen- elemen lain yang lebih kecil daripada pivot tersebut terletak di sebelah kirinya dan elemen-elemen lain yang lebih besar daripada pivot tersebut terletak di sebelah kanannya. Sehingga dengan demikian telah terbntuk dua sublist, yang terletak di sebelah kiri dan kanan dari pivot. Lalu pada sublist kiri dan sublist kanan kita anggap sebuah list baru dan kita kerjakan proses

yang sama seperti sebelumnya. Demikian seterusnya sampai tidak terdapat sublist lagi.

Sehingga didalamnya telah terjadi proses Rekursif.

Procedure quick sort

Procedure Asc_Quick(L,R : Integer);

Var i, j,k:integer;

Begin

If L<R then

Begin

i := L; j := R+1;

repeat

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

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

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

until i > j;

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

Asc_Quick(L,j-1);

Asc_Quick(j+1,R);

End;

for k:=1 to jmldata do

write(data[k],’ ‘);writeln;

End;



1 comment January 14, 2010

Hello world!

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

1 comment January 13, 2010

Pages

Categories

Links

Meta

Calendar

July 2017
M T W T F S S
« Jan    
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Most Recent Posts