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
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
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
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
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
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.
Revitalia purba

Revitalia purba

  • 1.
    Array Sorting danSearching 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 BUBLESORT 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 VoidinsertSort() { 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 staticvoid 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.