SORTING ( PENGURUTAN DATA )

January 14, 2010 mandachristanto

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;



Entry Filed under: Uncategorized

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Trackback this post  |  Subscribe to comments via RSS Feed

Pages

Categories

Calendar

January 2010
M T W T F S S
     
 123
45678910
11121314151617
18192021222324
25262728293031

Most Recent Posts

 
%d bloggers like this: