FONDASI PEMROGRAMAN STRUKTUR DATA 9 Sorting Sorting Introduction

  • Slides: 31
Download presentation
FONDASI PEMROGRAMAN & STRUKTUR DATA #9 Sorting

FONDASI PEMROGRAMAN & STRUKTUR DATA #9 Sorting

Sorting: Introduction to Sorting Method (Metode pengurutan) By: Augury El Rayeb

Sorting: Introduction to Sorting Method (Metode pengurutan) By: Augury El Rayeb

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Sorting artinya pengurutan, baik itu pengurutan dari kecil ke besar atau dari besar ke kecil. Unsorted Sorting Sorted

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Sorting dalam pemrograman yang diurutkan (biasanya) adalah data. Unsorted No Index [0] [1] [2] [3] [4] Nilai 9 17 5 12 No Index [0] [1] [2] [3] [4] Nilai 9 11 12 17 FYI: Sorting data juga merupakan langkah awal untuk searching data 11 Sorting Sorted 5

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Algoritma Sorting • Berikut adalah 3 algoritma sorting sederhana (yang memiliki metode sorting yang mirip), diantara sekian banyak algoritma sorting: • Bubble Sort • Selection Sort • Insertion Sort

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Algoritma Sorting • Ketiga algoritma tersebut (bubble sort, selection sort dan insertion sort) melibatkan 2 langkah yang dilaksanakan berulang-ulang, yaitu: ▫ Bandingkan 2 item ▫ Tukar tempat (kedua item tersebut) Namun tiap algoritma tersebut memiliki detil penanganan yang berbeda satu sama lainnya

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Bubble Sort • Diberi nama bubble sort karena dalam melakukan pengurutan tiap elemen cenderung untuk naik ke atas (bubble up) sampai ke urutan yang sesuai, seperti halnya bubble yang naik ke atas permukaan air soda • Bubble sort bekerja dengan membandingkan tiap elemen dengan elemen berikutnya (disebelahnya), dan melakukan pertukaran tempat jika urutannya tidak sesuai.

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Selection Sort • Diberi nama selection sort karena pengurutan dilakukan dengan cara berulang kali memilih (select) elemen terkecil berikutnya dan menukar tempatnya. • selection sort bekerja dengan memilih elemen dan membandingkannya dengan elemen lain (berikutnya) untuk menemukan yang terkecil atau yang terbesar (tergantung jenis urutan) dan kemudian saling bertukar tempat.

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Insertion Sort • Diberi nama Insertion sort karena pengurutan dilakukan dengan mengambil suatu elemen sebagai kunci kemudian membandingkan dengan elemen-elemen lain untuk disisipkan (insert) pada tempat yang tepat untuk elemen kunci tersebut. • Insertion sort bekerja dengan memilih elemen posisi nomor dua sebagai kunci, kemudian dibandingkan dengan elemen pada posisi sebelumnya, jika elemen kunci lebih kecil atau lebih besar (tergantung jenis urutan) maka elemen kunci disisipkan disana. Selanjutnya elemen nomor berikutnya sebagai kunci, kemudian dilakukan pembandingan dengan elemen-elemen pada posisi sebelumnya hingga didapatkan posisi yang tepat untuk disisipkan elemen kunci, demikian seterusnya.

Bubble Sort By: Augury El Rayeb

Bubble Sort By: Augury El Rayeb

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Bubble Sort • Bubble sort adalah metode pengurutan data dengan cara membandingkan tiap elemen dengan elemen berikutnya (disebelahnya), dan melakukan pertukaran tempat jika urutannya tidak sesuai.

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Misal diinginkan urutan ascending (dari kecil ke besar) TRIP #1 Mekanisme Bubble Sort No Index [0] [1] [2] [3] [4] Nilai 11 9 17 5 12 11 > 9 No Index • Berikut Rule pada Bubble Sort: ▫ Mulai dari kiri, bandingkan 2 item. ▫ Jika yang di sebelah kiri lebih besar, tukar tempat. ▫ Geser satu posisi ke kanan, untuk melakukan pembandingan selanjutnya. • Lakukan rule tersebut hingga mencapai posisi paling kanan. Nilai [0] [1] [2] [3] [4] 9 11 17 5 12 11 < 17 No Index Nilai [0] [1] [2] [3] [4] 9 11 17 5 12 17 > 5 No Index Nilai [0] [1] [2] [3] [4] 9 11 5 17 12 17 > 12 No Index Nilai [0] [1] [2] [3] [4] 9 11 5 12 17

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 No Index Nilai [0] [1] [2] [3] [4] 9 11 5 12 17 9 < 11 No Index Nilai TRIP #3 TRIP #2 Mekanisme Bubble Sort No Index Nilai [0] [1] [2] [3] [4] 9 5 11 12 17 9>5 [0] [1] [2] [3] [4] No Index 9 11 5 12 17 Nilai [0] [1] [2] [3] [4] 5 9 11 12 17 9 < 11 11 > 5 No Index Nilai [0] [1] [2] [3] [4] No Index 9 5 11 12 17 Nilai [0] [1] [2] [3] [4] 5 9 11 12 17 11 < 12 No Index Nilai 11 < 12 [0] [1] [2] [3] [4] No Index 9 5 11 12 17 Nilai [0] [1] [2] [3] [4] 5 9 11 12 17 12 < 17 No Index Nilai 12 < 17 [0] [1] [2] [3] [4] No Index 9 5 11 12 17 Nilai [0] [1] [2] [3] [4] 5 9 11 12 17

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Algoritma Bubble Sort Misal diinginkan urutan ascending (dari kecil ke besar). Terdapat data sebanyak n dalam array. (ingat index array dimulai dari 0) Langkah 1 • Pengurutan data dilakukan dengan cara: 1. 2. 3. 4. Bandingkan elemen sekarang dengan elemen berikutnya (mulai dari kiri), jika elemen sekarang > elemen berikutnya maka tukar tempat. Geser posisi sekarang ke posisi berikutnya. Ulangi langkah 1 - 2 selagi kurang dari jumlah item-1 (n-1) Ulangi langkah 1 - 3 selagi kurang dari jumlah item-1 (n-1) Langkah 2 Langkah 3 Langkah 4

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Potongan Kode untuk Bubble Sort //Bubble Sort i=0; do { j=0; do { if(data[j]>data[j+1]) { temp=data[j]; data[j]=data[j+1]; data[j+1]=temp; } j++; }while (j<n-1); i++; } while (i<n-1);

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Contoh Aplikasi Sort dengan Bubble Sort public class Sort. Class { private int temp; public int[] asc. Bubble. Sort(int[] array) { int i=0; int j=0; int n=array. length; do { j=0; do { if(array[j] > array[j+1]) { temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; } j++; }while (j<n-1); i++; } while (i<n-1); return array; } public int[] desc. Bubble. Sort(int[] array) { int i=0; int j=0; do { } } j=0; do { if(array[j] < array[j+1]) { temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; } j++; }while (j<n-1); i++; } while (i<n-1); return array; import java. util. Arrays; public class Test. Sort. Class { public static void main(String [] args) { int[] data = {5, 2, 7, 9, 2, 14, 1} ; Sort. Class data 1 = new Sort. Class(); data = data 1. asc. Bubble. Sort(data); System. out. print("asc sorted: "); Output: System. out. println(Arrays. to. String(data)); asc sorted: [1, 2, 2, 5, 7, 9, 14] }

Selection Sort By: Augury El Rayeb

Selection Sort By: Augury El Rayeb

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Selection Sort • Selection sort adalah metode pengurutan data dengan cara memilih elemen dan membandingkannya dengan elemen-elemen lain (berikutnya) untuk menemukan yang terkecil atau yang terbesar (tergantung jenis urutan) dan kemudian saling bertukar tempat.

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Misal diinginkan urutan ascending (dari kecil ke besar) • Berikut Rule pada Selection Sort: Mulai dari index sekarang=index 0 (kiri), ▫ Lakukan pencarian nilai terkecil ke arah index-index berikutnya. ▫ Lakukan pertukaran nilai pada index sekarang dengan nilai terkecil tersebut. ▫ Geser index sekarang satu posisi ke kanan, index sekarang = index sekarang + 1, untuk melakukan pencarian selanjutnya. • Lakukan rule tersebut hingga index sekarang mencapai posisi index terakhir-1. TRIP #1 Mekanisme Selection Sort No Index [0] [1] [2] [3] [4] Nilai 11 9 17 5 12 9 < 11 No Index [0] [1] [2] [3] [4] Nilai 11 9 17 5 12 9 < 17 No Index [0] [1] [2] [3] [4] Nilai 11 9 17 5 12 5<9 No Index [0] [1] [2] [3] [4] Nilai 11 9 17 5 12 5 < 12 No Index Nilai [0] [1] [2] [3] [4] 5 9 17 11 12

No Index Nilai [0] [1] [2] [3] [4] 5 9 17 11 12 Nilai

No Index Nilai [0] [1] [2] [3] [4] 5 9 17 11 12 Nilai [1] [2] [3] [4] 5 9 17 11 12 9 < 12 No Index Nilai [0] [1] [2] [3] [4] 5 9 17 11 12 11 < 17 No Index Nilai [0] [0] [1] [2] [3] [4] 5 9 17 11 12 11 < 12 9 < 11 No Index Nilai 9 < 17 No Index TRIP #4 TRIP #2 Mekanisme Selection Sort TRIP #3 Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 No Index Nilai [0] [1] [2] [3] [4] 5 9 11 17 12 12 < 17 No Index Nilai [0] [1] [2] [3] [4] 5 9 11 17 12 [0] [1] [2] [3] [4] 5 9 11 12 17

Algoritma Selection Sort Misal diinginkan urutan ascending (dari kecil ke besar). Terdapat data sebanyak

Algoritma Selection Sort Misal diinginkan urutan ascending (dari kecil ke besar). Terdapat data sebanyak n dalam array. (ingat index array dimulai dari 0) Mulai dari index sekarang=0 • Pengurutan data dilakukan dengan cara: 1. index terkecil = index sekarang 2. next index = index sekarang + 1 3. Jika data pada next index < data pada index terkecil, index terkecil = next index. 4. next index + 1 5. Ulangi langkah 3 - 4 selagi next index < jumlah item (n) 6. Tukar tempat data pada next index sekarang dengan data pada index terkecil. 7. Index sekarang + 1 8. Ulangi langkah 1 - 7 selagi index sekarang < jumlah item-1 (n-1) Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Langkah 2 Langkah 3 Langkah 4 Langkah 5 Langkah 6 Langkah 7 Langkah 8

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Potongan Kode untuk Selection Sort //Selection Sort index. Sekarang=0; do { terkecil=index. Sekarang; next. Index=index. Sekarang+1; do { if(data[next. Index] < data[terkecil]) { terkecil = next. Index; } next. Index++; } while(next. Index<n); temp = data[index. Sekarang]; data[index. Sekarang] = data[terkecil]; data[terkecil] = temp; index. Sekarang++; } while(index. Sekarang<n-1);

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Contoh Aplikasi Sort dengan Selection Sort public class Sort. Class { private int temp; public int[] asc. Selection. Sort(int[] array) { int index. Sekarang, next. Index; int terkecil; int n=array. length; index. Sekarang=0; do { terkecil=index. Sekarang; next. Index=index. Sekarang+1; do { if(array[next. Index] < array[terkecil]) { terkecil = next. Index; } next. Index++; } while(next. Index<n); temp = array[index. Sekarang]; array[index. Sekarang] = array[terkecil]; array[terkecil] = temp; index. Sekarang++; } while(index. Sekarang<n-1); return array; } public int[] desc. Selection. Sort(int[] array) { int index. Sekarang, next. Index; int terbesar; int n=array. length; do { terbesar=index. Sekarang; next. Index=index. Sekarang+1; do { } } if(array[next. Index] > array[terbesar]) { terbesar = next. Index; } next. Index++; } while(next. Index<n); temp = array[index. Sekarang]; array[index. Sekarang] = array[terbesar]; array[terbesar] = temp; index. Sekarang++; } while(index. Sekarang<n-1); return array; import java. util. Arrays; public class Test. Sort. Class { public static void main(String [] args) { int[] data = {5, 2, 7, 9, 2, 14, 1} ; Sort. Class data 1 = new Sort. Class(); data = data 1. desc. Selection. Sort(data); System. out. print(“desc sorted: "); System. out. println(Arrays. to. String(data)); } Output: } desc sorted: [14, 9, 7, 5, 2, 2, 1]

Insertion Sort By: Augury El Rayeb

Insertion Sort By: Augury El Rayeb

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Insertion Sort • Insertion sort adalah metode pengurutan data dengan cara memilih elemen sebagai kunci (posisi nomor dua), kemudian dibandingkan dengan elemen pada posisi sebelumnya, jika elemen kunci lebih kecil atau lebih besar (tergantung jenis urutan) maka elemen kunci disisipkan disana. Selanjutnya elemen nomor berikutnya sebagai kunci, kemudian dilakukan pembandingan dengan elemen-elemen pada posisi sebelumnya hingga didapatkan posisi yang tepat untuk disisipkan elemen kunci, demikian seterusnya.

Mulai dari index 1 (elemen kedua dari kiri) sebagai kunci, 1. Simpan nilai pada

Mulai dari index 1 (elemen kedua dari kiri) sebagai kunci, 1. Simpan nilai pada index kunci dalam temporary. Index sekarang = index kunci 2. Geser index sekarang ke kiri (index sekarang-1), 3. Bandingkan index sekarang dengan nilai temporary, a. Jika nilai pada index sekarang > nilai temporary, isikan nilai index sekarang ke sebelah kanannya (index sekarang + 1), ulangi langkah 2 – 3 sampai index sekarang = 0, Isikan nilai temporary pada index 0 b. Jika nilai pada index sekarang < nilai temporary, Isikan nilai temporary pada index sekarang + 1. 4. Geser kunci ke kanan (index kunci + 1), • Ulangi langkah 1 – 4, hingga index terakhir TRIP #1 TRIP #2 Misal diinginkan urutan ascending (dari kecil ke besar) • Berikut Rule pada Bubble Sort: TRIP #3 Mekanisme Insertion Sort Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 No Index [0] [1] [2] [3] [4] Nilai 11 9 17 5 12 11>9 9 [0] [1] [2] [3] [4] 9 11 17 5 12 11<17 17 [0] [1] [2] [3] [4] 9 11 17 5 12 17>5 5 No Index Nilai [0] [1] [2] [3] [4] 9 11 17 17 12 5 11 > 5 No Index Nilai [0] [1] [2] [3] [4] 9 11 11 17 12 5 9>5 No Index Nilai [0] [1] [2] [3] [4] 5 9 11 17 12

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Misal diinginkan urutan ascending (dari kecil ke besar) • Berikut Rule pada Bubble Sort: Mulai dari index 1 (elemen kedua dari kiri) sebagai kunci, 1. Simpan nilai pada index kunci dalam temporary. Index sekarang = index kunci 2. Geser index sekarang ke kiri (index sekarang-1), 3. Bandingkan index sekarang dengan nilai temporary, a. Jika nilai pada index sekarang > nilai temporary, isikan nilai index sekarang ke sebelah kanannya (index sekarang + 1), ulangi langkah 2 – 3 sampai index sekarang = 0, Isikan nilai temporary pada index 0 b. Jika nilai pada index sekarang < nilai temporary, Isikan nilai temporary pada index sekarang + 1. 4. Geser kunci ke kanan (index kunci + 1), • Ulangi langkah 1 – 4, hingga index terakhir TRIP #4 Mekanisme Insertion Sort No Index Nilai [0] [1] [2] [3] [4] 5 9 11 17 12 17>12 12 [0] [1] [2] [3] [4] 5 9 11 17 17 12 11<12 No Index Nilai [0] [1] [2] [3] [4] 5 9 11 12 17

Algoritma Insertion Sort Misal diinginkan urutan ascending (dari kecil ke besar). Terdapat data sebanyak

Algoritma Insertion Sort Misal diinginkan urutan ascending (dari kecil ke besar). Terdapat data sebanyak n dalam array. (ingat index array dimulai dari 0) Mulai dari index. Kunci= 1 • ulangi langkah berikut selagi index. Kunci<n: 1. Data[index. Kunci] diisi ke temp 2. index. Sekarang = index. Kunci 3. Ulangi langkah berikut selagi index. Sekarang>0 dan data[index. Sekarang-1]>temp: a. data[index. Sekarang]=data[index. Sek arang-1] b. index. Sekarang=index. Sekarang-1 4. data[index. Sekarang]=temp 5. index. Kunci++ Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Potongan Kode untuk Insertion Sort // i: index kunci, // j: index sekarang i = 1; while( i < n ) { temp = data[i]; j = i; while( j > 0 && data[j-1] > temp) { data[j] = data[j-1]; j = j - 1; } data[j]=temp; i++; }

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Contoh Aplikasi Sort dengan Insertion Sort while(index. Kunci<n) { temp=array[index. Kunci]; index. Sekarang=index. Kunci; while( index. Sekarang>0 && array[index. Sekarang-1]<temp) { array[index. Sekarang] = array[index. Sekarang-1]; index. Sekarang=index. Sekarang-1; } array[index. Sekarang]=temp; index. Kunci++; } return array; public class Sort. Class { private int temp; public int[] asc. Insertion. Sort(int[] array) { int index. Kunci, index. Sekarang; int n=array. length; } index. Kunci=1; } while(index. Kunci<n) { temp=array[index. Kunci]; index. Sekarang=index. Kunci; while( index. Sekarang>0 && array[index. Sekarang 1]>temp) { array[index. Sekarang] = array[index. Sekarang-1]; index. Sekarang=index. Sekarang-1; } array[index. Sekarang]=temp; index. Kunci++; } return array; } public int[] desc. Insertion. Sort(int[] array) { int index. Kunci, index. Sekarang; int n=array. length; index. Kunci=1; import java. util. Arrays; public class Test. Sort. Class { public static void main(String [] args) { int[] data = {5, 2, 7, 9, 2, 14, 1} ; Sort. Class data 1 = new Sort. Class(); data = data 1. asc. Insertion. Sort(data); System. out. print(“asc sorted: "); System. out. println(Arrays. to. String(data)); } Output: } asc sorted: [1, 2, 2, 5, 7, 9, 14]

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 See You Next Topic Thanks