SORTING C++
- Bubble
Sort (sederhana tetapi lambat)
- Quick
Sort (cepat tetapi rumit)
- Selection
Sort
- Insert
Sort
- Merge
Sort
#1 Bubble Sort
Yang pertama kita akan membahas bubble sort. Algoritma ini merupakan
salah satu algoritma pengurutan yang paling sederhana, baik dalam hal
pengertian maupun penerapannya.
Ide dari algoritma bubble sort
adalah mengulang proses pembandingan antara tiap-tiap elemen array dan
menukarnya apabila urutannya salah.
Teknik ini menyusun data yang diinginkan secara berurutan dengan
membandingkan elemen data yang ada dan terus diulang hingga tidak perlu
dilakukan penukaran lagi.
Berikut ini adalah gambaran dari algoritma bubble sort:
fori
:=1to
Jumlah_data
-1do
for
j
:=i
+1to
Jumlah_data
do
if
Data
[i
]>Data
[j
]then
begin
t
:=Data
[i
];
Data
[i
]:=Data
[j
];
Data
[j
]:=t
;
end;
Kita misalkan memiliki 5 angka yang akan kita simpan kedalam
variabel
Data
(Array).
Dengan masing-masing nilai sebagai berikut:
Data[1] := 3;
Data[2] := 1;
Data[3] := 4;
Data[4] := 2;
Data[5] := 6;
Cara Kerja:
1. Langkah
pertama:
Data[1]
akan dibandingkan dengan Data[2]
. Jika Data[1]
lebih besar
dari Data[2]
maka nilai dari kedua variabel tersebut ditukar posisinya.
2.
Data[1]
akan terus dibandingkan
dengan data-data selanjutnya (Data[3]
, Data[4]
, dan Data[5]
). Hingga
akhirnya Data[1]
berisi nilai terkecil.
3. Setelah proses
perbandingan
Data[1]
selesai, selanjutnya kita akan membandingkan Data[2]
dengan Data[3]
, Data[4]
dan Data[5]
seperti proses
sebelumnya.
4. Begitu seterusnya
sampai semua data selesai di bandingkan.
Berikut adalah conto program pascal dengan agoritma buble sort:
ProgramBubble_Urutan
;
uses
crt
;
var
Data
:array[1..
5]
of
integer
;
i
,j
,t
,Jumlah_data
:integer
;
Begin
Data
[1]:=
3;
Data
[2]:=
1;
Data
[3]:=
4;
Data
[4]:=
2;
Data
[5]:=
6;
Jumlah_data
:=5;
writeln
('Data Awal:');
for
i
:=1to
Jumlah_data
do
begin
writeln
('Data[',i
,'] = ',Data
[i
]);
end;
for
i
:=1to
Jumlah_data
-1do
for
j
:=i
+1to
Jumlah_data
do
if
Data
[i
]>Data
[j
]then
begin
t
:=Data
[i
];
Data
[i
]:=Data
[j
];
Data
[j
]:=t
;
end;
writeln
('Hasil:');
for
i
:=1to
Jumlah_data
do
begin
writeln
('Data[',i
,'] = ',Data
[i
]);
end;
End.
#2 Quick Short
Algoritma quick short ditemukan oleh E. Hoare. Algoritma ini
menggunakan metode rekursi sampai habis. Prinsipnya membagi data menjadi dua
bagian yang sama (kiri dan kanan).
Dimana data tengah menjadi pivot (pusat operasi). Kemudian kita
akan mengumpukan data dengan nilai lebih kecil dari pivot disebelah kiri pivot,
dan di kanan untuk yang lebih besar.
Karena dimungkinkan bagian kiri dan kanan pivot tidak sama
besarnya. maka dari itu tiap bagian di bagi menjadi dua lagi sehingga mempunyai
pivot yang baru.
baca
:=0;
pusat
:=A
[(awal
+akhir
)div
2];
kiri
:=awal
;
kanan
:=akhir
;
Whilekiri
<=kanan
Do
Begin
While
A
[kiri
]<
pusat
Do
Inc
(kiri
);
While
A
[kanan
]>
pusat
Do
Dec
(kanan
);
If
kiri
<=kanan
Then
Begin
Ganti
(A
[kiri
],A
[kanan
]);
Inc
(kiri
);
Dec
(kanan
);
Inc
(baca
);
End;
End;
Ifkanan
>awal
Then
Urut
(awal
,kanan
);
If
akhir
>kiri
Then
Urut
(kiri
,akhir
);
Algoritma Quick Sort juga disebut juga dengan partition Exchange sort karena
konsepnya membuat partisi-partisi, dan sort dilakukan per partisi.
#4 Selection Sort
Algoritma utamanya adalah sebagai berikut:
baca
:=0;
Fori
:=1
To
m
-1Do
Begin
tempat
:=i
;
For
j
:=i
+1To
m
Do
If
A
[tempat
]>A
[j
]Then
tempat
:=j
;
Ganti
(A
[i
],A
[tempat
]);
Inc
(baca
);
End;
#5 Insert Sort
Algoritma utamanya adalah sebagai berikut :
baca
:=0;
Fori
:=2
To
m
Do
Begin
G
:=A
[i
];
j
:=i
-1;
A
[0]:=G
;
While
G
<A
[j
]Do
Begin
A
[j
+1]:=A
[j
];
Dec
(j
);
Inc
(baca
);
End;
A
[j
+1]:=G
;
End;
#6 Merge Sort
Algoritma utamanya
Begin
i
:=awal
;
k
:=awal
;
j
:=tengah
+1;
Repeat
If
A
[i
]<A
[j
]Then
Begin
B
[k
]:=A
[i
];
Inc
(i
);
End
Else
Begin
B
[k
]:=A
[j
];
Inc
(j
);
End;
Inc
(k
);
Inc
(baca
);
Until(
i
>tengah
)Or
(j
>akhir
);
Ifi
>tengah
Then
For
t
:=j
Toakhir
Do
Begin
B
[k
+t
-j
]:=A
[t
];
End
Else
For
t
:=i
Totengah
Do
Begin
B
[k
+t
-i
]:=A
[t
];
End;
End;
Komentar
Posting Komentar