Tugas Sorting Kel12 Revisi

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Tugas Sorting Kel12 Revisi as PDF for free.

More details

  • Words: 2,000
  • Pages: 19
TUGAS SISTEM BERKAS

MAKALAH ALGORITMA SORT

KELAS H KELOMPOK 12 ANGGOTA : 1. 2. 3. 4. 5.

REZA FAKHRUL ISFAQ SYAMSUL ARIEFIN NUR FAUZY DADANG SETYAHADI KHAIRIYAMIN IMAN

06.2003.1.90039 06.2006.1.03967 06.2001.1.02634 06.2000.1.02222 06.2000.1.02166

TEKNIK INFORMATIKA INSTITUT TEKNOLOGI ADHI TAMA SURABAYA SURABAYA 2007

ALGORITMA SORT Pengurutan data sangat penting untuk data yang bertipe data numerik ataupun karakter. Pengurutan dapat dilakukan secara ascending (urut naik) dan descending (urut turun) Pengurutan (Sorting) adalah proses menyusun kembali data yang sebelumnya telah disusun dengan suatu pola tertentu, sehingga tersusun secara teratur menurut aturan tertentu. Contoh: Data Acak : 5 6 8 1 3 25 10 Ascending : 1 3 5 6 8 10 25 Descending : 25 10 8 6 5 3 1

DEKLARASI ARRAY UNTUK SORTING Deklarasikan: int data[100]; int n; //untuk jumlah data

Fungsi untuk Tukar 2 Buah Data: public tukar(int *a,int *b){ int t=*a; *a=*b; *b=t; }

METODE PENGURUTAN DATA Pengurutan berdasarkan perbandingan (comparison-based sorting) o Bubble Sort, Exchange Sort Pengurutan berdasarkan prioritas (priority queue sorting method) o Selection Sort, Heap Sort Pengurutan berdasarkan penyisipan dan penjagaan terurut (insert and keep sorted method) o Insertion Sort, Tree Sort Pengurutan berdasarkan pembagian dan penguasaan (devide and conquer method) o Quick Sort, Merge Sort Pengurutan berkurang menurun (diminishing increment sort method) o Shell Sort

BUBBLE SORT Metode sorting termudah akan tetapi merupakan metode yang paling lambat. Diberi nama “Bubble” karena proses pengurutan secara berangsur-angsur bergerak/berpindah ke posisinya yang tepat, seperti gelembung yang keluar dari sebuah gelas bersoda. Bubble Sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya. Pengurutan Ascending :Jika elemen sekarang lebih besar dari elemen berikutnya maka kedua elemen tersebut ditukar. Pengurutan Descending: Jika elemen sekarang lebih kecil dari elemen berikutnya, maka kedua elemen tersebut ditukar. Algoritma ini seolah-olah menggeser satu per satu elemen dari kanan ke kiri atau kiri ke kanan, tergantung jenis pengurutannya. Ketika satu proses telah selesai, maka bubble sort akan mengulangi proses, demikian seterusnya.

Kapan berhentinya? Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah diinginkan.

Gb. Proses 1 Metode Buble Sort

Pada gambar diatas, pegecekan dimulai dari data yang paling akhir, kemudian dibandingkan dengan data di depannya, jika data di depannya lebih besar maka akan ditukar.

Gb. Proses 2 Metode Buble Sort

Pada proses kedua, pengecekan dilakukan sampai dengan data ke-2 karena data pertama pasti sudah paling kecil.

Gb. Proses 3 Metode Buble Sort

Gb. Proses 4 Metode Buble Sort

Gb. Proses 5 Metode Buble Sort

Hasil Analisa Empiris Efisiensi Metode Buble Sort

Gb. Grafik Efisiensi metode Buble Sort

Procedure Buble Sort //Versi 1 public bubble_sort(){ for(int i=1;i=i;j--){ if(data[j]data[j+1]) tukar(&data[j],&data[j+1]); //descending } } }

EXCHANGE SORT Sangat mirip dengan Bubble Sort Banyak yang mengatakan Bubble Sort sama dengan Exchange Sort Pebedaan : dalam hal bagaimana membandingkan antar elemen elemennya. Exchange sort membandingkan suatu elemen dengan elemen-elemen lainnya dalam array tersebut, dan melakukan pertukaran elemen jika perlu. Jadi ada elemen yang selalu menjadi elemen pusat (pivot). Sedangkan Bubble sort akan membandingkan elemen pertama/terakhir dengan elemen sebelumnya/sesudahnya, kemudian elemen sebelum/sesudahnya itu akan menjadi pusat (pivot) untuk dibandingkan dengan elemen sebelumnya/sesudahnya lagi, begitu seterusnya.

Gb. Awal (Penentuan Pivot) metode Excange Sort

Gb. Proses 1 metode Exchange Sort

Gb. Proses 2 metode Exchange Sort

Gb. Proses 3 metode Exchange Sort

Gb. Proses 4 metode Exchange Sort

Gb. Proses 5 metode Exchange Sort

Procedur e Exchange Sort public exchange_sort() { for (int i=0; i
HEAP SORT Merupakan salah metode terbaik untuk data dengan jumlah besar, tetapi paling lambat dari O(n log n) algoritma sorting, dibandingkan metode Merge Sorting dan Quick Sorting. Pengurutan dimulai dengan data yang bernilai paling besar ditempatkan di posisi paling akhir, dan data yang terkecil di posisi paling awal. Membutuhkan 2 array untuk proses pengurutan, array pertama untuk data sebelum diurutkan, dan arry ke-2 untuk penempatan hasil pengurutan.

contoh Di posisi Top, setelah 9 diposisikan di posisi terakhir, 9 diganti 4 4 di ganti dengan 7 (7 lebih besar dr 3), membuat 4 sebagai top dr subtree, dibawahnya ada 5 yang masih aktif, maka nanti keduanya dipindah 4 diganti posisi oleh 5

7 diganti posisi oleh 4

4 diganti posisi oleh 5

Gb Metode Heap Sort

5 diganti posisi oleh 2

2 diganti posisi oleh 4

4 diganti posisi oleh 1

1 diganti posisi oleh 3

3 diganti posisi oleh 2

2 diganti posisi oleh 1, sekarang proses sudah selesai Gb Metode Heap Sort

Hasil Analisa Empiris Efisiensi Metode Heap Sort

Gb. Grafik Efisiensi metode Heap Sort

Procedure Heap Sort class Heap { public heapSort(int numbers[], int array_size) { int i, temp; for (i = (array_size / 2)-1; i >= 0; i--) siftDown(numbers, i, array_size); for (i = array_size-1; i >= 1; i--) { temp = numbers[0]; numbers[0] = numbers[i];

numbers[i] = temp; new siftDown(numbers, 0, i-1); } } private siftDown(int numbers[], int root, int bottom) { int done, maxChild, temp; done = 0; while ((root*2 <= bottom) && (!done)) { if (root*2 == bottom) maxChild = root * 2; else if (numbers[root * 2] > numbers[root * 2 + 1]) maxChild = root * 2; else maxChild = root * 2 + 1; if (numbers[root] < numbers[maxChild]) { temp = numbers[root]; numbers[root] = numbers[maxChild]; numbers[maxChild] = temp; root = maxChild; } else done = 1; } } }

SELECTION SORT Merupakan kombinasi antara sorting dan searching Untuk setiap proses, akan dicari elemen-elemen yang belum diurutkan yang memiliki nilai terkecil atau terbesar akan dipertukarkan ke posisi yang tepat di dalam array. Misalnya untuk putaran pertama, akan dicari data dengan nilai terkecil dan data ini akan ditempatkan di indeks terkecil (data[0]), pada putaran kedua akan dicari data kedua terkecil, dan akan ditempatkan di indeks kedua (data[1]). Selama proses, pembandingan dan pengubahan hanya dilakukan pada indeks pembanding saja, pertukaran data secara fisik terjadi pada akhir proses.

Gb. Proses 1 Metode Selection Sort

Gb. Proses 2 Metode Selection Sort

Gb. Proses 3 Metode Selection Sort

Gb. Proses 4 Metode Selection Sort

Gb. Proses 5 Metode Selection Sort

Hasil Analisa Empiris Efisiensi Metode Selection Sort

Gb. Grafik Efisiensi metode Selection Sort

Procedure Selection Sort public selection_sort(){ for(int i=0;i
INSERTION SORT Mirip dengan cara orang mengurutkan kartu, selembar demi selembar kartu diambil dan disisipkan (insert) ke tempat yang seharusnya. Pengurutan dimulai dari data ke-2 sampai dengan data terakhir, jika ditemukan data yang lebih kecil, maka akan ditempatkan (diinsert) diposisi yang seharusnya. Pada penyisipan elemen, maka elemen-elemen lain akan bergeser ke belakang.

Gb. Proses 1 Metode Insertion Sort

Gb. Proses 2 Metode Insertion Sort

Gb. Proses 3 Metode Insertion Sort

Gb. Proses 4 Metode Insertion Sort

Gb. Proses 5 Metode Insertion Sort

Hasil Analisa Empiris Efisiensi Metode Insertion Sort

Gb. Grafik Efisiensi metode Insertion Sort

Procedure Insertion Sort public insertion_sort(){ int temp; for(int i=1;itemp && j>=0){ data[j+1] = data[j]; j--; } data[j+1] = temp; } }

MERGE SORT Data yang akan diurutkan dibagi menjadi 2 bagian, dan di tempatkan di 2 array yang berbeda. Merge Sort membutuhkan 3 array, 1 array untuk menempatkan hasilnya, dan sisanya merupakan data yang akan di urutkan. Ke-2 array tersebut di urutkan kemudian disimpan pada masing-masing array, lalu digabungkan pada array yang pertama. Misal : Data a, dipecah dalam array ke-2 dan array ke-3, kemudian array ke-2 dan array ke-3 melakukan proses pengurutan. Setelah mendapatkan hasil, hasil pengurutan dari array ke-2 dan ke-3digabungkan dalam array ke-1.

Gb. Proses 1 Metode Merge Sort

Gb. Proses 2 metode Merge Sort

Gb. Proses 3 Metode Merge Sort

Gb. Proses 4 Metode Merge Sort

Gb. Proses 5 dan 6 Metode Merge Sort

Gb. Proses 7 Metode Merge Sort

Hasil Analisa Empiris Efisiensi Metode Merge Sort

Gb. Grafik Efisiensi metode Merge Sort

Procedure Merge Sort class Merge { public mergeSort(int numbers[], int temp[], int array_size) { new m_sort(numbers, temp, 0, array_size - 1); } private m_sort(int numbers[], int temp[], int left, int right) { int mid; if (right > left) { mid = (right + left) / 2; new m_sort(numbers, temp, left, mid); new m_sort(numbers, temp, mid+1, right); new merge(numbers, temp, left, mid+1, right); } } private merge(int numbers[], int temp[], int left, int mid, int right) { int i, left_end, num_elements, tmp_pos; left_end = mid - 1; tmp_pos = left; num_elements = right - left + 1; while ((left <= left_end) && (mid <= right)) { if (numbers[left] <= numbers[mid]) { temp[tmp_pos] = numbers[left]; tmp_pos = tmp_pos + 1; left = left +1; } else { temp[tmp_pos] = numbers[mid]; tmp_pos = tmp_pos + 1; mid = mid + 1; } } while (left <= left_end) { temp[tmp_pos] = numbers[left]; left = left + 1; tmp_pos = tmp_pos + 1; } while (mid <= right) { temp[tmp_pos] = numbers[mid]; mid = mid + 1; tmp_pos = tmp_pos + 1; } for (i=0; i <= num_elements; i++) { numbers[right] = temp[right];

right = right - 1; } } }

QUICK SORT Merupakan metode yang sangat cepat dengan teori algoritma yang mudah, tetapi dalam penulisan programnya sangat sulit. Merupakan kombinasi antara metode Exchange Sort dan metode Merge Sort. Ada empat langkah dalam melakukan metode ini, yaitu: o If (n<=1), maka kembali ke awal atau mengehentikan proses. o Ambil satu elemen dari array sebagai Pusat (Pivot) seperti halnya di metode Exchange Sort. o Array dipecah menjadi dua bagian, pecahan array pertama terdiri dari elemen yang lebih besar dari Pivot, sedangkan pecahan array ke-2 memiliki elemen yang lebih kecil dari Pivot. o Kemudian, kedua pecahan tersebut melakukan proses pengurutan.

Gb Proses 1 Metode Quick Sort

Gb. Proses 2 Metode Quick Sort

Gb. Proses 3 Metode Quick Sort

Gb. Proses 4 Metode Quick Sort

Gb. Proses 5 Metode Quick Sort

Gb. Proses 6 Metode Quick Sort

Gb. Proses 7 Metode Quick Sort

Hasil Analisa Empiris Efisiensi Metode Quick Sort

Gb. Grafik Efisiensi metode Quick Sort

Procedure Quick Sort Class Quick { public quickSort(int numbers[], int array_size) { new q_sort(numbers, 0, array_size - 1); } private q_sort(int numbers[], int left, int right) { int pivot, l_hold, r_hold; l_hold = left; r_hold = right; pivot = numbers[left]; while (left < right) { while ((numbers[right] >= pivot) && (left < right)) right--; if (left != right) { numbers[left] = numbers[right];

left++; } while ((numbers[left] <= pivot) && (left < right)) left++; if (left != right) { numbers[right] = numbers[left]; right--; } } numbers[left] = pivot; pivot = left; left = l_hold; right = r_hold; if (left < pivot) new q_sort(numbers, left, pivot-1); if (right > pivot) new q_sort(numbers, pivot+1, right); } }

SHELL SORT Merupakan metode O(n2) yang sangat efisien dan komplek. Diciptakan oleh Donald Shell tahun 1959. Merupakan metode berupa Increment Sort, dan lebih dikenal dengan “comb sort” dalam dunia pemrograman yang belum sempurna. Konsepnya hampir sama dengan metode Insertion Sort. Rangkaian data :

3

9

8

4

7

Membagi rangkaian menjadi 3 bagian Left Arr Mid Arr

3

4

9

Right Arr

7

8

Gb Proses 1 Motode Shell Sort Pindahkan elemen, jika elemen kiri lebih besar dari elemen kanan

3

4

7

9

8

Gb Proses 2 Motode Shell Sort Gabungkan ketiga bagian, dalam satu rangkaian, dengan disusun satu per satu elemen dari angka terkecil.

3

4

7

8

9

Gb Proses 3 Motode Shell Sort

Hasil Analisa Empiris Efisiensi Metode Shell Sort

Gb. Grafik Efisiensi metode Selection Sort

Procedure Shell Sort class Shell_Sort { public shellSort(int numbers[], int array_size) { int i, j, increment, temp; increment = 3; while (increment > 0) { for (i=0; i < array_size; i++) { j = i; temp = numbers[i]; while ((j >= increment) && (numbers[j-increment] > temp)) { numbers[j] = numbers[j - increment]; j = j - increment; } numbers[j] = temp; } if (increment/2 != 0) increment = increment/2; else if (increment == 1) increment = 0; else increment = 1; } } }

DAFTAR PUSTAKA http://linux.wku.edu http://lecturer.ukdw.ac.id http://selikoer.files.wordpress.com

Related Documents

Sorting
May 2020 22
Sorting
July 2020 22
Sorting
April 2020 18
Sorting
November 2019 28
Sorting
April 2020 29