LANJUTAN DARI SHORTING YUNI SAFRIANA 1405020047 ALFAN KHAIRA

  • Slides: 27
Download presentation
LANJUTAN DARI SHORTING YUNI SAFRIANA (1405020047) ALFAN KHAIRA (1405020048) RIZKI FITRIA (1405020046) CUT LISA

LANJUTAN DARI SHORTING YUNI SAFRIANA (1405020047) ALFAN KHAIRA (1405020048) RIZKI FITRIA (1405020046) CUT LISA SANDORA (14050200)

PENGERTIAN SORTING Sorting merupakan suatu proses untuk menyusun kembali himpunan obyek menggunakan aturan tertentu.

PENGERTIAN SORTING Sorting merupakan suatu proses untuk menyusun kembali himpunan obyek menggunakan aturan tertentu. Sorting disebut juga sebagai suatu algoritma untuk meletakkan kumpulan elemen data kedalam urutan tertentu berdasarkan satu atau beberapa kunci dalam tiap-tiap elemen. Pada dasarnya ada dua macam urutan yang biasa digunakan dalam suatu proses sorting: 1. 2. urut naik (ascending) Mengurutkan dari data yang mempunyai nilai paling kecil sampai paling besar urut turun (descending) Mengurutkan dari data yang mempunyai nilai paling besar sampai paling kecil.

Merge sort merupakan algoritma pengurutan dalam ilmu komputer yang dirancang untuk memenuhi kebutuhan pengurutan

Merge sort merupakan algoritma pengurutan dalam ilmu komputer yang dirancang untuk memenuhi kebutuhan pengurutan atas suatu rangkaian data yang tidak memungkinkan untuk ditampung dalam memori komputer karena jumlahnya yang terlalu besar. Algoritma ini ditemukan oleh John von Neumann pada tahun 1945. (id. wikipedia. org) Algoritma pengurutan data merge sort dilakukan dengan menggunakan cara divide and conquer yaitu dengan memecah kemudian menyelesaikan setiap bagian kemudian menggabungkannya kembali. Pertama data dipecah menjadi 2 bagian dimana bagian pertama merupakan setengah (jika data genap) atau setengah minus satu (jika data ganjil) dari seluruh data, kemudian dilakukan pemecahan kembali untuk masing blok sampai hanya terdiri dari satu data tiap blok.

Setelah itu digabungkan kembali dengan membandingkan pada blok yang sama apakah data pertama lebih

Setelah itu digabungkan kembali dengan membandingkan pada blok yang sama apakah data pertama lebih besar daripada data ketengah+1, jika ya maka data ke-tengah+1 dipindah sebagai data pertama, kemudian data ke-pertama sampai ke-tengah digeser menjadi data ke-dua sampai ke-tengah+1, demikian seterusnya sampai menjadi satu blok utuh seperti awalnya. Sehingga metode merge sort merupakan metode yang membutuhkan fungsi rekursi untuk penyelesaiannya

contoh penerapan atas sebuah larik/array sebagai data sumber yang akan diurutkan {3, 9, 4,

contoh penerapan atas sebuah larik/array sebagai data sumber yang akan diurutkan {3, 9, 4, 1, 5, 2} adalah sebagai berikut: � pertama kali larik tersebut dibagi menjadi dua bagian, {3, 9, 4} dan {1, 5, 2} � Kedua larik kemudian diurutkan secara terpisah sehingga menjadi {3, 4, 9} dan {1, 2, 5} � Sebuah larik baru dibentuk yang sebagai penggabungan dari kedua larik tersebut {1}, sementara nilai-nilai dalam masing larik {3, 4, 9} dan {2, 5} (nilai 1 dalam elemen larik ke dua telah dipindahkan ke larik baru langkah berikutnya adalah penggabungan dari masing-masing larik ke dalam larik baru yang dibuat sebelumnya. � {1, 2} <-> {3, 4, 9} dan {5} � {1, 2, 3} <-> {4, 9} dan {5} � {1, 2, 3, 4} <-> {9} dan {5} � {1, 2, 3, 4, 5} <-> {9} dan {null} � {1, 2, 3, 4, 5, 9} <-> {null} dan {null} )

Contoh program sedehana merge sort public class merge. Sort{ public static void main(String a[]){

Contoh program sedehana merge sort public class merge. Sort{ public static void main(String a[]){ int i; int array[] = {7, 5, 1, 3, 6, 4, 9, 8}; System. out. println("nn Kelompok 3nn"); System. out. println(" Pengurutan dengan Merge Sortnn"); System. out. println("Data Sebelum Diurutkan: n"); for(i = 0; i < array. length; i++) System. out. print( array[i]+" "); System. out. println(); merge. Sort_srt(array, 0, array. length-1); System. out. print("Data Setelah Diurutkan: n"); for(i = 0; i <array. length; i++) System. out. print(array[i]+" "); System. out. println(); } public static void merge. Sort_srt(int array[], int lo, int n){ int low = lo;

; int high = n; if (low >= high) {return; } int middle =

; int high = n; if (low >= high) {return; } int middle = (low + high) / 2; merge. Sort_srt(array, low, middle); merge. Sort_srt(array, middle + 1, high); int end_low = middle; int start_high = middle + 1; while ((lo <= end_low) && (start_high <= high)) { if (array[low] < array[start_high]) { low++; } else { int Temp = array[start_high]; for (int k = start_high- 1; k >= low; k--) {array[k+1] = array[k]; } array[low] = Temp; low++; end_low++; start_high++; } } }

- Selection Sort Teknik sorting ini dibuat dengan cara melakukan pengecek'an 1 persatu, bila

- Selection Sort Teknik sorting ini dibuat dengan cara melakukan pengecek'an 1 persatu, bila kita akan mengurutkan secara ascending maka kita lakukan pengecek'an nilai tempat yang pertama (index pertama pada array)kita bandingkan dengan semua nilai yang ada kita cari nilai minimalnya. lalu simpan index/ letak nilai minimum itu di temukan, setelah pengecekan selesai tukar index awal pengecekan dengan nilai minimum yang telah di simpan tadi. Proses ini dilakukan terus menerus sampai pada pengecekan index terakhir min 1 dengan index terakhir. beda dengan streith selection sort adalah dengan teknik ini melakukan pertukaran nilai lebih sedikit, hanya jumlah data - 1 pertukaran. jadi waktu untuk melakukan proses sorting lebih cepat.

Contoh Selection Sort : Ascending Cek seluruh elemen array, temukan nilai terkecil (1) dan

Contoh Selection Sort : Ascending Cek seluruh elemen array, temukan nilai terkecil (1) dan tukarkan posisinya dengan posisi nilai yang tersimpan pada posisi pertama dari array (3)

Temukan nilai kedua (2), dan tukarkan posisinya dengan nilai yang berada paterkecil da posisi

Temukan nilai kedua (2), dan tukarkan posisinya dengan nilai yang berada paterkecil da posisi kedua (10). Dua elemen biru pertama tidak akan berubah lagi sebab mereka sudah merupakan nilai terkecil pertama dan kedua dalam array tsb. Sekarang, ulangi dengan cara/proses “pilih dan tukar”

Pengurutan Selesai.

Pengurutan Selesai.

Contoh Program Selection Sort menggunakan bahasa pemrograman C++ berikut kode programnya : #include <iostream>

Contoh Program Selection Sort menggunakan bahasa pemrograman C++ berikut kode programnya : #include <iostream> #include <conio. h> int { int int main(void) array[5]; // An array of integers. length = 5; // Lenght of the array. i, j; firstelement, temp; //Some input for (i = 0; i < length; i++) { cout << "Enter a number: "; cin >> array[i]; }

//Algorithm for (i= length - 1; i > 0; i--) { firstelement = 0;

//Algorithm for (i= length - 1; i > 0; i--) { firstelement = 0; for (j=1; j<=i; j++) { if (array[j] < array[firstelement]) firstelement = j; } temp = array[firstelement]; array[firstelement] = array[i]; array[i] = temp; } //Some output for (i = 0; i < 5; i++) { cout << array[i] << endl; } getch(); }

Program Setelah dieksekusi

Program Setelah dieksekusi

Shell Sort Metode ini dikembangkan oleh Donald L. Shell pada tahun 1959. Dalam metode

Shell Sort Metode ini dikembangkan oleh Donald L. Shell pada tahun 1959. Dalam metode ini jarak antara dua elemen yang dibandingkan ditukarkan tertentu. Secara singkat metode ini dijelaskan sebagai berikut. Pada langkah pertama, kita ambil elemen pertama dan kita bandingkan dengan elemen pada jarak tertentu dari elemen pertama tersebut. Kemudain elemen kedua kita bandingkan dengan eleen lain dengan jarak yang sama seperti diatas. Demikian seterusnya sampai seluruh elemen dibandingkan. Pada langkah kedua proses diulang dengan langkah yang lebih kecil, pada langkah ketiga jarak tersebut diperkecil lagi seluruh proses dihentikan jika jarak sudah sama dengan satu.

Contoh dari proses Sorting dengan menggunakan metode Shell Sort :

Contoh dari proses Sorting dengan menggunakan metode Shell Sort :

Dalam Procedure Pascal : Procedure Shell(Var Temp : Data; Jml. Data : Integer); Var

Dalam Procedure Pascal : Procedure Shell(Var Temp : Data; Jml. Data : Integer); Var I, J, Jarak : Integer; Begin Jarak : = Jml. Data Div 2; While Jarak > 0 Do Begin For I: =1 To Jml. Data-Jarak Do Begin J : = I + Jarak; If Temp[I] > Temp[J] Then SWAP(Temp[I], Temp[Lok]); End; Jarak : = Jarak Div 2; End;

Penerapan teknik sort ke dalam program SELECTION SORT Algoritma Selection sort memilih elemen maksimum/minimum

Penerapan teknik sort ke dalam program SELECTION SORT Algoritma Selection sort memilih elemen maksimum/minimum array, lalu menempatkan elemen maksimum/minimum itu pada awal atau akhir array (tergantung pada urutannya ascending/descending). Selanjutnya elemen tersebut tidak disertakan pada proses selanjutnya. Karena setiap kali selection sort harus membandingkan elemen-elemen data, algoritma ini termasuk dalam comparison-based sorting. Seperti pada algoritma Bubble Sort, proses memilih nilai maksimum /minimum dilakukan pada setiap pass. Jika array berukuran N, maka jumlah pass adalah N-1.

Terdapat dua pendekatan dalam metode pengurutan dengan Selection Sort : Algoritma pengurutan maksimum (maximum

Terdapat dua pendekatan dalam metode pengurutan dengan Selection Sort : Algoritma pengurutan maksimum (maximum selection sort), yaitu memilih elemen maksimum sebagai basis pengurutan. Algoritma pengurutan minimum (minimum selection sort), yaitu memilih elemen minimum sebagai basis pengurutan

Maximum Selection Sort Ascending Untuk mendapatkan array yang terurut menaik (ascending), algoritma maximum selection

Maximum Selection Sort Ascending Untuk mendapatkan array yang terurut menaik (ascending), algoritma maximum selection sort dapat ditulis sebagai berikut : Jumlah Pass = N-1 (jumlah pass) Untuk setiap pass ke – I = 0, 1, …. . , jumlah pass lakukan : � cari elemen maksimum (maks) mulai dari elemen ke – I sampai elemen ke – (N-1) � pertukarkan maks dengan elemen ke – I � kurangi N dengan satu

Rincian setiap pass adalah sebagai berikut : Langkah 1 : Cari elemen maksimum di

Rincian setiap pass adalah sebagai berikut : Langkah 1 : Cari elemen maksimum di dalam L[0. . (N-1)] Pertukarkan elemen maksimum dengan elemen L[N-1] Langkah 2 : Cari elemen maksimum di dalam L[0. . N-2] Pertukarkan elemen maksimum dengan elemen L[N-2] Langkah 3 : Cari elemen maksimum di dalam L[0. . N-3] Pertukarkan elemen maksimum dengan elemen L[N-3] …………. . Langkah N-1 : Tentukan elemen maksimum di dalam L[0. . 1] Pertukarkan elemen maksimum dengan elemen L[0] (elemen yang tersisa adalah L[0], tidak perlu diurut karena hanya satu-satunya). Jadi , pada setiap pass pengurutan terdapat proses mencari harga maksimum dan proses pertukaran dua buah elemen array.

Misal, terdapat array L dengan N = 5 buah elemen yang belum terurut. Array

Misal, terdapat array L dengan N = 5 buah elemen yang belum terurut. Array akan diurutkan secara. Ascending (menaik), dengan algoritma maximum selection sort. 9 0 7 1 12 2 6 3 1 4 Pass 1 : � Cari elemen maksimum di dalam array L[0. . 4]. Maks=L[2]=12 � Tukar Maks dengan L[4], diperoleh : 9 0 7 1 1 2 6 3 12 4

Ada 5 metode dalam teknik sorting, diantaranya adalah : 1. Comparison-Based Sorting (pengurutan berdasarkan

Ada 5 metode dalam teknik sorting, diantaranya adalah : 1. Comparison-Based Sorting (pengurutan berdasarkan perbandingan) # Bubble sort, exchange sort 2. Priority Queue Sorting Method (pengurutan berdasarkan prioritas) # Selection sort, heap sort 3. Insert and Keep Sorted Method (pengurutan berdasarkan penyisipan dan penjagaan terurut) # Insertion sort, tree sort 4. Devide and Conquer Method(pengurutan berdasarkan pembagian dan penguasaan) # Quick sort, merge sort 5. Diminishing Increment Sort Method (pengurutan berkurang menurun) # Shell sort

Soal: 1. Jelaskan yang di maksud dengan shell sort! 2. Buatlah satu program tentang

Soal: 1. Jelaskan yang di maksud dengan shell sort! 2. Buatlah satu program tentang merge sort? 3. Sebutkan kelebihan dan kelemahan sort? 4. Sebutkan metode-metode teknik sort? 5. Siapakah yang pertama kali menemukan algoritma merge sort?

Terima kasih Wasalam

Terima kasih Wasalam