1. Array Sorting dan Searching Array
Tugas Kuliah Algoritma dan Struktur Data
Revitalia Purba
Manajemen Informatika
Politeknik Negeri Lampung
Bandar Lampung, Lampung
revitalap@gmail.com
Sorting adalah proses proses menyusun kembali data yang
sebelumnya telah disusun dengan suatu pola tertentu ataupun
secara acak, sehingga menjadi tersusun secara teratur menurut
aturan tertentu
I. PENGERTIAN SORTING .
Sorting pada pemrograman adalah proses mengurutkan data
yang berada dalam suatu tempat penyimpanan, dengan urutan
tertentu yaitu
- Urutan naik (ascending) dari nilai terkecil hingga
terbesar atau
- Urutan turun (descending) dari nilai terbesar hingga
nilai terkecil.
Contoh :
Misal suatu kumpulan DATA berisi 8 elemen :
DATA : 77, 33, 44, 11, 88, 22, 66, 55
Setelah diurutkan :
Ascending : 11 22 33 44 55 66 77 88
Descending : 88 77 66 55 44 33 22 11
II. KELEBIHAN DAN KEKURANGAN ARRAY SORTING
Kelebihan dari Array Sorting, yaitu
1. Struktur data paling mudah
2. Memori ekonomis, bila semua elemen terisi
3. Waktu akses sama kesetiap elemen.
Kekurangan Array Sorting , yaitu :
1. Boros memori jika banyak elemen yang tidak
digunakan
2. Struktur data statis.
III. MACAM-MACAM BENTUK SHORTING
Berikut ini adalah macam-macam betuk shorting , yaitu :
1. Bubble Sort
2. Selection Sort
3. Insertion Sort
4. Marge Sort
5. Shell Short
IV. BUBLE SORT
Bubble Sort (metode gelembung) adalah metode
pengurutan dengan cara melakukan penukaran data dengan
tepat disebelahnya secara terus menerus sampai bisa dipastikan
dalam satu iterasi tertentu tidak ada lagi perubahan.
Kelebihan dan Kekurangan Bubble Sort
- Kelebihan :
1. Metode Bubble Sort merupakan yang paling simple
2. Metode Bubble Sort muda di pahami algoritmanya
- Kelemahan :
Meskipun simpel metode Bubble Sort merupakan metode
pengurutan yang paling tidak efisien.
CONTOH MENCARI DATA MENGGUNAKAN BUBBLE SORT
Data yang ingin di sorting :
10 52 5 7 9 8
2. CONTOH PEMOGRAMAN BUBLE SORT
for (K = 0 ; K < N-1 ; K++)
{
for (i = 0 ; i < N-2-K ; i++)
{
if ( A[i] > A[i+1] )
{
x = A[i];
A[i] = A[i+1];
A[i+1] = x;
}
}
}
V. SELECTION SORT
Selection sort merupakan perbaikan dari metode bubble
sort dengan mengurangi jumlah perbandingan. Selection sort
merupakan metode pengurutan dengan mencari nilai data
terkecil dan nilai data terbesar dimulai dari data diposisi 0
hingga diposisi N-1.
Algoritma penyisipan langsung dapat dituliskan sebagai
berikut :
1. i ← 1
2. selama (i < N) kerjakan baris 3 sampai dengan 9
3. x ← Data[i]
4. j ← i – 1
5. selama (x < Data[j]) kerjakan baris 6 dan 7
6. Data[j + 1] ← Data[j]
7. j ← j – 1
8. Data[j+1] ← x
9. i ← i + 1
CONTOH MENCARI DATA MENGGUNAKAN SELECTION SORT
Data yang ingin di sorting :
10 52 5 7 9 8
Proses 1
0 1 2 3 4 5
10 52 5 7 9 8
Pembanding Posisi
10 < 52 0
10 > 5 (tukar idx) 2
5 < 7 2
5 < 9 2
5 < 8 2
Tukar data ke-0 (10) dengan data ke-2 (5)
Proses 2
0 1 2 3 4 5
5 52 10 7 9 8
Pembanding Posisi
52 > 10 2
10 > 7 (Tukar idx) 3
7 < 9 3
7 < 8 3
Tuker data ke -2 (10) dengan data ke 3 (7).
Proses 3
0 1 2 3 4 5
5 7 10 52 9 8
Pembanding Posisi
10 < 52 0
10 > 9 (Tuker idx) 4
9 > 5 5
Tuker data ke-4(9) dengan data ke-5 (10).
Proses 4
0 1 2 3 4 5
5 7 8 52 9 10
Pembanding Posisi
3. 52 > 9 (Tuker idx) 4
9 > 10 0
Tuker data ke-3 (52) dengan data ke-4 (9).
Proses 5
0 1 2 3 4 5
5 7 8 9 52 10
Pembanding Posisi
52 > 10 (Tuker idx) 5
Tuker data ke-4(52) dengan data ke-5(10).
5 7 8 9 10 52
RUMUS SELECTION SORT
for ( i=0 ; i <= N-2 ; i++)
{
j = i;
for ( k = i+1 ; k <= N-1 ; k++ )
{
if (A[k] > A[j])
{
j = k;
}
}
x = A[i];
A[i] = A[j];
A[j] = x;
}
VI. Selection Sort
Cara pengurutannya yaitu dimulai dari data ke-2 sampai
dengan data terakhir, jika ditemukan data yang lebih
kecil,maka akan ditempatkan (diinsert) diposisi yang
seharusnya.- Ascending : ketika perbandingan ambil data
yang paling kecil. - Descending : ketika perbandingan ambil
data yang paling besar.
Algoritma penyisipan biner dapat dituliskan sebagai berikut :
1. i ← 1
2. selama (i < N) kerjakan baris 3 sampai dengan 14
3. x ← Data[i]
4. l ← 0
5. r ← i – 1
6. selama (l<=r) kerjakan baris 7 dan 8
7. m ← (l + r) / 2
8. jika (x < Data[m]) maka r ← m – 1, jika tidak l ← m
+ 1
9. j ← i – 1
10. selama ( j >=l) kerjakan baris 11 dan 12
11. Data[j+1] ← Data[j]
12. j ← j – 1
13. Data[l] ← x
14. I ← i + 1
CONTOH MENCARI DATA MENGGUNAKAN INSERTION SORT
Data yang ingin di sorting :
10 52 5 7 9 8
4. RUMUS INSERTION SORT
Void insertSort()
{
int i, j, x;
for (i=1; i<max; i++) {
x = data[i];
j = i – j;
while (x < data[j]) {
data[j+1] = data[j];
j--;
}
data[j+1] = x;
}
}
VII. 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).
Algoritma penggabungan dapat dituliskan sebagai berikut :
1. i ← 0
2. j ← 0
3. J3 ← 0
4. Kerjakan baris 5 sampai dengan 7 selama (i < J1)
atau (j < J2)
5. J3 ← J3 + 1
6. Jika (T1[i] < T2[j]) maka T3[J3] ← T1[i], i ← i +
7. 1Jika (T1[i] >= T2[j]) maka T3[J3] ← T2[j], j ← j +
1
8. Jika (i > J1) maka kerjakan baris 9, jika tidak
kerjakan baris 15
9. i ← j
10. Selama (i < J2) kerjakan baris 11 sampai dengan 13
11. J3 ← J3 + 1
12. T3[J3] ← T2[i]
13. i ← i + 1
14. Selesai
15. j ← i
16. Selama (j < J1) kerjakan baris 17 sampai dengan 19
17. J3 ← J3 + 1
18. T3[J3] ← T1[j]
19. j ← j + 1
CONTOH MENCARI DATA MENGGUNAKAN MERGE SORT
Data yang ingin di sorting :
15 12 45 56 13 10
5. RUMUS MERGE SORT
static void mergeSort(int l,int r)
{
if(l==r) return;
else{
int mid = (l+r)/2;
mergeSort(l, mid);
mergeSort(mid+1,r);
Merging(l,mid+1,r);
}
}
VIII.SHELL SORT
Metode ini disebut juga dengan metode pertambahan
menurun (diminishing increment). Metode ini dikembangkan
oleh Donald L. Shell pada tahun 1959, sehingga sering disebut
dengan Metode Shell Sort. Metode ini mengurutkan data
dengan cara membandingkan suatu data dengan data lain yang
memiliki jarak tertentu, kemudian dilakukan penukaran bila
diperlukan
Algoritma metode Shell dapat dituliskan sebagai berikut :
1. Jarak ← N
2. Selama (Jarak > 1) kerjakan baris 3 sampai dengan 9
3. Jarak ← Jarak / 2. Sudah ← false
4. Kerjakan baris 4 sampai dengan 8 selama Sudah =
false
5. Sudah ← true
6. j ← 0
6. 7. Selama (j < N – Jarak) kerjakan baris 8 dan 9
8. Jika (Data[j] > Data[j + Jarak] maka tukar Data[j],
Data[j + Jarak]. Sudah ← true
9. j ← j + 1
Prosedur yang menggunakan metode Shell.
void ShellSort(int N)
{
int Jarak, i, j;
bool Sudah;
Jarak = N;
while(Lompat > 1){
Jarak = Jarak / 2;
Sudah = false;
while(!Sudah){
Sudah = true;
for(j=0; j<N-Jarak; j++){
i = j + Jarak;
if(Data[j] > Data[i]){
61
Tukar(&Data[j], &Data[i]);
Sudah = false;
}
}
}
}
}
DAFTAR PUSTAKA
Kutipan dari beberapa sumber. [1]. Assalah “Sorting pada
pemrograman adalah proses mengurutkan data yang berada
dalam suatu tempat penyimpanan, dengan urutan tertentu” [2].
MPD “Bubble Sort Diberi nama “Bubble” karena proses
pengurutan secara berangsur-angsur bergerak/berpindah ke
posisinya yang tepat, seperti gelembung” . [3] Dr. Taufik Fuadi
Abidin, M.Tech , Irvanizam Zamanhuri “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”. [4] Komplikita “Sorting salah satu bagian
penting dari struktur data adalah proses pengurutan data-data
itu sendiri. Data akan terkadang akan berada dalam bentuk
yang tidak berpola ataupun dengan pola tertentu yang tidak kita
inginkan, namun dalam penggunaanya, kita akan selalu ingin
menggunakan data-data tersebut dalam bentuk yang rapi atau
berpola sesuai dengan yang kita inginkan” .
[1] Dr. Taufik Fuadi Abidin, M.Tech , Irvanizam Zamanhuri, M.Sc.
Metode Sorting. http://www.informatika.unsyiah.ac.id/tfa/ds
/mergesort.pdf. 31 Mei 2015. 19:20.
[2] Komplikita. Sorting Array. http://www.kompikita.net/2013/01/
sorting-array-java.html. 1 Juni 2015. 12:13. .
[3] Asalasah. Algoritma dan Contoh Metode Sorting Insertion Sort.
http://asalasah.net/algoritma-dan-contoh-metode-sorting-
insertion-sort/. 31 Mei 2015. 21:15.
[4] MDP. Algoritma dan Struktur Data. http://www.mdp.ac.id/
materi/2012-2013-2/sp244/121076/SP244-121076-510-18.pdf. 1
Juni 2015. 11:10.