1. Metode Sorting dan Aplikasinya
Tugas Kuliah Algoritma dan Struktur Data
Siti mutiah nurmala dewi
Manajemen Informatika
Politeknik Negeri Lampung
Bandar Lampung, Lampung
Sitimutiah1510@gmail.com
Abstrak— makalah ini membahas tentang pengurutan
menggunakan lima algoritma yang berbeda, yaitu bubble sort,
selection sort, insertion sort, quick sort, heap sort, merge sort.
Sorting adalah Proses mengurutkan, menyusun/ memindahkan
posisi elemen-elemen/ data dengan tata urut tertentu pada
array. Sedangkan Searching adalah Proses penelusuran/
pencarian posisi elemen-elemen / data pada array.[1]
Kata kunci—alogoritma, sorting, searching, bubble sort,
selection sort, insertion sort, quick sort, heap sort.
1.PENDAHULUAN
1.1 LATAR BELAKANG
Sort adalah proses pengurutan data yang sebelumnya disusun
secara acak sehingga menjadi tersusun secara teratur menurut
suatu aturan tertentu.
[3]
Pada umumnya terdapat 2 jenis pengurutan :
• Ascending (Naik)
• Descending (Turun)
Contoh pengurutan data :
• Data Acak : 5 6 8 1 3 25 10
• Terurut
Ascending : 1 3 5 6 8 10 25
• Terurut
Descending : 25 10 8 6 5 3 1
1.2 TUJUAN PENULISAN
• Menerapkan algoritma bubble sort, selection sort,
merge sort, quick sort, insertion sort, dan heap sort.
• Menguji dan membandingkan bubble sort, selection
sort, merge sort, quick sort, insertion sort, dan heap
sort.
2.PEMBAHASAN
1.1 BUBBLE SORT
• Metode pengurutan buble sort/ gelembung, prosedur
atau algorimatnya adalah sbb: -
a. pengecekan dimulai dari data ke-1 sampai dengan
data ke-n. -
b. bandingkan data ke-n dengan data sebelumnya (n-
1),jika lebih kecil maka tukar bilangan tersebut
dengan data yang ada didepanya satu persatu (n-1,n-
2,n-3,..dst).
c. lakukan langkah ke 2 sampai mendapatkan urutan
yang maksimal.
Berikut ini contoh pembuatan sebuah program
pengurutandata atau sorting dengan metode bubble sort kita
akan memasukan 15 data yang init
data[15]={8,1,45,2,5,2,9,6,12,7,8,6,10,11,44};
yang tidak berurutan. pemrogramanya, serta akan di hitung
berapa banyak proses pertukaran posisi data, dan berapa
banyak proses perbandingan data. contoh codingnya adalah
sebagai berikut :
ContohProgramMetode Bubble Sort
int tmp,TK, FB:
void main () {
int Data[15]:{8,1,45,2,5,2,9,6,12,7,8,6,10,11,44};
cout<<">>> Sorting dengan Metode Bubble <<<n’’;
cout<<"_______________________________________n":
cout<<"nnData sebelum di Urutkan >> ";
for (int i=0: i<15; i--) {
cout<Data[i]<<" ";
}
for (int h=0; h<15; h++){
for (int i=0; i<15; i--) {
FB++;
if (Data[i] > Data[i+1]){
tmp=Data[i];
Data[i]=Data[i+1];
2. Data[i+1]=tmp;
TK--;
}
}
} cout<<endl<<endl;
cout<<"Data Sesudah di Urutkan >> ";
for (int j=0; j<15; j++)
{ cout<<Data[j]<<" ";
}
cout<<"nnJumlah Proses Pertukaran = "<<TK;
cout<<"nnJumlah Proses Perbandingan = "<<FB; getch();
}
Maka hasilnya
1.2 MetodeSelectionSort.
• Metode pengurutan selection sort,prosedur atau
algorimatnya adalah sbb : -
a. pengecekan dimulai dari data ke -1 sampai
dengan data ke – n.
b. tentukan bilangan dengan index terkecil dari
data bilangan tersebut.
c. tukar bilangan dengan index terkecil tersebut
dengan bilangan pertama (I= 1)dari bilangan
tersebut.
d. lakukanlah langkah 2 dan 3 untuk bilangan
berikut (I=I+1)sampai dapatkan urutan yang
optimal.
Contoh selection sort :
Proses 1
Proses 2 :
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;
1.3 INSERTION SORT
Pengurutan dilakukan dengan caramembandingkan 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.
Conto insertion sort :
Proses 1 :
3. Proses 2 :
Prosedur 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;
1.4 HEAP 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.
Contoh quick sort
Proses 1 :
Proses 2 :
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.4 Heapsort
4. Heapsort dilakukan dengan cara membangun struktur data
heap dan kemudian menerapkan langkah menghapus node
heap. Pada awalnya, kondisi heap kosong. Kemudian, node
heap di-insert satu per satu.
Cara alternatif adalah, menampung data yang akan
diurutkan dalam array, kemudian node pada bagian root di
hapus. Jika heap adalah minimal heap, maka data pada root
adalah data terkecil.
Contoh Heapsort
P S C K M L A X E
0 1 2 3 4 5 6 7 8
Konversi array menjadi Heap. Tentukan node parent
yang terakhir dalam array, yaitu (heapsize – 2)/2. Pada contoh
di atas, node K adalah parent terakhir. Kemudian, lakukan
FilterDown dari indeks parent terakhir s/d indeks 0. Pada
contoh di atas, dari indeks 3, 2, 1, kemudian 0.
ARRAY TO HEAP
Tree tersebut adalah Binary Tree namun belum
merupakan minimal heap yang benar. Kemudian terapkan
FilterDown pada node dimana parent terakhir berada,
yaitu K
LAKUKAN FILTER DOWN
Setelah FilterDown selesai untuk node K, lanjutkan proses
yang sama untuk indek 2 yaitu node C.
Setelah FilterDown selesai untuk node C, lanjutkan proses
yang sama untuk indek 1 yaitu node S.
Hasil: Sebuah Heap terbentuk! Selanjutnya, remove node A
menggunakan algoritma menghapus node dalam Heap.
Remove Node darii Heap
5. • Remove selalu dimulai dari root karena node root
adalah node dengan nilai terkecil
• Masalahnya adalah bagaimana melakukan adjustment
agar binary tree tetap menjadi minimal head
• Algoritma: Remove node root dan ganti node tersebut
dengan node pada posisi paling akhir. Kemudian
fungsi FilterDown dipanggil untuk
• memeriksa dari root sd node leaf agar setiap node
masih memenuhi syarat heap.
Node C ditukar dengan node A, ukuran array diasumsikan
berkurang 1 yaitu dari indeks 0 sd 7. Kemudian, tentukan
indeks parent terakhir, dan ulangi proses .
C E L K M S P X A
0 1 2 3 4 5 6 7 8
Hasil Akhir
Data yang terurut descending order
X S P M L K E C A
0 1 2 3 4 5 6 7 8
1.5 Merge Sort
Metode pengurutan merge sort adalah metode pengurutan
lanjut, sama dengan metode Quick Sort. Metode ini juga
menggunakan konsep devide and conquer yang membagi data
S dalam dua kelompok yaitu S1 dan S2 yang tidak beririsan
(disjoint). Proses pembagian data dilakukan secara rekursif
sampai data tidak dapat dibagi lagi atau dengan kata lain data
dalam sub bagian menjadi tunggal. Setelah data tidak dapat
dibagi lagi, proses penggabungan (merging) dilakukan antara
sub-sub bagian dengan memperhatikan urutan data yang
diinginkan (ascending/kecil ke besar atau descending/besar ke
kecil). Proses penggabungan ini dilakukan sampai semua data
tergabung dan
terurut sesuai urutan yang diiginkan. Kompleksitas algoritma
merge sort.
Ilustrasi dari algoritma merge sort adalah sebagai berikut:
Algoritma mergesort(S,C)
Input: n elemen dari data S dan comparator C
Output: data S terurut berdasarkan C
if S.size()>1
(S1,S2) ← partisi(S,n/2)
mergesort(S1,C)
mergesort(S2,C)
S ← merge(S1,S2)
Fungsi merge berfungsi untuk menggabungkan hasil
pengurutan dari sub
bagian S1 dan S2 berdasarkan urutan tertentu (ascending atau
descending
order). Kompleksitas proses penggabungan ini (merging)
adalah O(n).
1. DAFTAR PUSTAKA
• https://www.academia.edu/6608552/Tugas-
makalah-struktur-data
• eprints.unsri.ac.id/2644/2/Jurnal_Infotel_2_-
_Akatel_SP.pdf
• sumarna.staff.gunadarma.ac.id/Downloads/files/3
1662/8.+Sorting.pdf
6. • Remove selalu dimulai dari root karena node root
adalah node dengan nilai terkecil
• Masalahnya adalah bagaimana melakukan adjustment
agar binary tree tetap menjadi minimal head
• Algoritma: Remove node root dan ganti node tersebut
dengan node pada posisi paling akhir. Kemudian
fungsi FilterDown dipanggil untuk
• memeriksa dari root sd node leaf agar setiap node
masih memenuhi syarat heap.
Node C ditukar dengan node A, ukuran array diasumsikan
berkurang 1 yaitu dari indeks 0 sd 7. Kemudian, tentukan
indeks parent terakhir, dan ulangi proses .
C E L K M S P X A
0 1 2 3 4 5 6 7 8
Hasil Akhir
Data yang terurut descending order
X S P M L K E C A
0 1 2 3 4 5 6 7 8
1.5 Merge Sort
Metode pengurutan merge sort adalah metode pengurutan
lanjut, sama dengan metode Quick Sort. Metode ini juga
menggunakan konsep devide and conquer yang membagi data
S dalam dua kelompok yaitu S1 dan S2 yang tidak beririsan
(disjoint). Proses pembagian data dilakukan secara rekursif
sampai data tidak dapat dibagi lagi atau dengan kata lain data
dalam sub bagian menjadi tunggal. Setelah data tidak dapat
dibagi lagi, proses penggabungan (merging) dilakukan antara
sub-sub bagian dengan memperhatikan urutan data yang
diinginkan (ascending/kecil ke besar atau descending/besar ke
kecil). Proses penggabungan ini dilakukan sampai semua data
tergabung dan
terurut sesuai urutan yang diiginkan. Kompleksitas algoritma
merge sort.
Ilustrasi dari algoritma merge sort adalah sebagai berikut:
Algoritma mergesort(S,C)
Input: n elemen dari data S dan comparator C
Output: data S terurut berdasarkan C
if S.size()>1
(S1,S2) ← partisi(S,n/2)
mergesort(S1,C)
mergesort(S2,C)
S ← merge(S1,S2)
Fungsi merge berfungsi untuk menggabungkan hasil
pengurutan dari sub
bagian S1 dan S2 berdasarkan urutan tertentu (ascending atau
descending
order). Kompleksitas proses penggabungan ini (merging)
adalah O(n).
1. DAFTAR PUSTAKA
• https://www.academia.edu/6608552/Tugas-
makalah-struktur-data
• eprints.unsri.ac.id/2644/2/Jurnal_Infotel_2_-
_Akatel_SP.pdf
• sumarna.staff.gunadarma.ac.id/Downloads/files/3
1662/8.+Sorting.pdf