Nama : Siti Hajar Unit : B Nim : 1405020040 No.Hp : 0852 – 2000 – 3786
Buatlah 1 contoh program insertion sort. Tuliskan pengertian sorting menurut pendapat anda masing – masing. Buatlah contoh prgram buble sort dalam bahasa pascal Tuliskan algoritma quick recursif. Sebutkan dan jelaskan metode – metode sorting.
Contoh program insertion sort #include <stdio.h> int main() { int n, array[1000], c, d, t; printf("Enter number of elements\n"); scanf("%d", &n); printf("Enter %d integers\n", n); for (c = 0; c < n; c++) { scanf("%d", &array[c]); }
for (c = 1 ; c <= n - 1; c++) { d = c; while ( d > 0 && array[d] < array[d-1]) { t = array[d]; array[d] = array[d-1]; array[d-1] = t; d--; } printf("Sorted list in ascending order:\n"); for (c = 0; c <= n - 1; c++) { printf("%d\n", array[c]); return 0;
OUTPUT DARI PROGRAM
PENGERTIAN SORTING sorting adalah sebuah metode untuk pengurutan data, misalnya dari data yang terbesar ke data yang terkecil. Dengan cara program yang dibuat harus dapat membandingkan antar data yang di inputkan. Artinya jika ada deretan data, maka data yang pertama akan membandingkan dengan data yang kedua. Jika data yang pertama lebih besar dari pada data yang kedua maka data yang pertama akan bertukar posisi dengan data yang kedua, begitu seterusnya sampai benar-benar data terurut dari yang terbesar hingga yang terkecil.
Contoh Prgram Buble Sort Dalam Bahasa Pascal program bubble_sort_polma; uses crt; var i,n,j : integer; a : array [1..10] of integer; procedure urutkan; z : integer; begin for i:=1 to n-1 do for j:=n downto i+1 do if a[j] > a[j-1] then
z:=a[j]; a[j]:=a[j-1]; a[j-1]:=z; end; begin clrscr; writeln('Program : Mengurutkan Nilai menggunakan Bubble Sort');
writeln; write ('Masukkan banyak data yang ingin di urut : '); readln(n); for i:=1 to n do begin write ('Data ',i,' : '); readln(a[i]); end; urutkan; write('Data setelah diurutkan : '); for j:=1 to n do write (a[j],' '); readln; end.
TAMPILAN OUTPUT PROGRAM
Algoritma Quick Recursif Algoritma quick Rekursif dapat dituliskan sebagai berikut : Algoritma Quick Sort terdiri dari dua prosedur, yaitu prosedur PARTISI dan prosedur QUICKSORT. Berikut pseudocode dari algoritma quick sort : Procedure quick_sort (I/O A : TabelInt, input i,j : integer ) { Mengurutkan table A [i..j] dengan algoritma Quick Sort, dengan pemilihan pivot menggunakan elemen median table. Masukan : Tabel [i..j] yang sudah terdefinisi elemen-elemennya. Keluaran : Tabel [i..j] yang terurut secara asc }
Kamus p,q,temp, pivot : integer Algoritma p i q j pivot A[(p+q) div 2] repeat while A[p] < pivot do p p + 1 endwhile while A[q] > pivot do q q - 1
endwhile if p £ q then temp A[p] A[p] A[q] A[q] temp p p +1 q q - 1 endif until p > q if i < q then quick_sort (A, i, q) if j > p then quick_sort (A, p, j)
Algoritma diatas termasuk dalam algoritma mempartisi dan algoritma mengurutkan dimana algoritma partisi untuk dapat menuju keadaan terurut tidaklah sukar lagi, setelah membagi tabel maka diterpkan lagi procedure yang sama pada keadaan bagian, procedure diatas mengktifkan dirinya sendiri secara rekursif.
Metode – metode Sorting BUBBLE SORT Bubble sort adalah proses pengurutan sederhana yang bekerja dengan cara berulang kali membandingkan dua elemen data pada suatu saat dan menukar elemen data yang urutannya salah. Ide dari Bubble sort adalah gelembung air yang akan “mengapung” untuk table yang terurut menaik (ascending). Elemen bernilai kecil akan “diapungkan” (ke indeks terkecil), artinya diangkat ke “atas” (indeks terkecil) melalui pertukaran. Karena algoritma ini melakukan pengurutan dengan cara membandingkan elemen-elemen data satu sama lain, maka bubble sort termasuk ke dalam jenis algoritma comparison-based sorting.
Proses dalam Bubble sort dilakukan sebanyak N-1 langkah (pass) dengan N adalah ukuran array. Pada akhir setiap langkah ke – I , array L[0..N] akan terdiri atas dua bagian, yaitu bagian yang sudah terurut L[0..I] dan bagian yang belum terurut L[I+1..N-1]. Setelah langkah terakhir, diperoleh array L[0..N-1] yang terurut menaik. Untuk mendapatkan urutan yang menaik, algoritmanya dapat ditulis secara global sebagai berikut : Untuk setiap pass ke – I = 0,1,………., N-2 , lakukan : Mulai dari elemen J = N-1, N-2,….., I + 1, lakukan :
Bandingkan L[J-1] dengan L[J] Pertukarkan L[J-1] dengan L[J] jika L[J-1] > L[J] Rincian setiap pass adalah sebagai berikut : Pass 1: I = 0. Mulai dari elemen J = N-1,N–2,…,1, bandingkan L[J-1] dengan L[J]. Jika L[J-1] > L[J], pertukarkan L[J-1] dengan L[J]. Pada akhir langkah 1, elemen L[0] berisi harga minimum pertama. Pass 2: I = 1. Mulai dari elemen J = N-1,N–2,…,2, bandingkan L[J-1] dengan L[J]. Jika L[J-1] > L[J], pertukarkan L[J-1] dengan L[J]. Pada akhir langkah 2, elemen L[1] berisi harga minimum kedua dan array L[0..1] terurut, sedangkan L[2..(N-1)] belum terurut. Pass 3: I = 2. Mulai dari elemen J = N-1,N–2,…,3, bandingkan L[J-1] dengan L[J]. Jika L[J-1] > L[J], pertukarkan L[J-1] dengan L[J]. Pada akhir langkah 3, elemen L[2] berisi harga minimum ketiga dan array L[0..2] terurut, sedangkan L[3..(N-1)] belum terurut.
Pass N-1: Mulai dari elemen J = N-1, bandingkan L[J-1] dengan L[J] Pass N-1: Mulai dari elemen J = N-1, bandingkan L[J-1] dengan L[J]. Jika L[J-1] > L[J], pertukarkan L[J-1] dengan L[J]. Pada akhir langkah N-2, elemen L[N-2] berisi nilai minimun ke [N-2] dan array L[0..N-2] terurut menaik (elemen yang tersisa adalah L[N-1], tidak perlu diurut karena hanya satu-satunya). Misal array L dengan N = 5 buah elemen yang belum terurut. Array akan diurutkan secara ascending (menaik). 0 1 2 3 4 Pass 1 : I = 0 ;J= N-1= 4 8 9 7 1 6 J = 3 8 9 1 7 6 J = 2 8 1 9 7 6 J = 1 1 8 9 7 6 Hasil akhir langkah 1 : 1 8 9 7 6 8 9 7 6 1
0 1 2 3 4 Pass 2 : I = 1 ;J= N-1= 4 1 8 9 6 7 J = 3 1 8 6 9 7 J = 2 1 6 8 9 7 Hasil akhir langkah 2 : 0 1 2 3 4 Pass 3 : I = 2 ;J= N-1= 4 1 6 8 7 9 J = 3 1 6 7 8 9 Hasil akhir langkah 3 : 1 6 8 9 7 1 6 7 8 9
Metode Selection Sort Selection Sort berbeda dengan Bubble sort Metode Selection Sort Selection Sort berbeda dengan Bubble sort. Selection Sort pada dasarnya memilih data yang akan diurutkan menjadi dua bagian, yaitu bagaian yang sudah diurutkan dan bagian yang belum di urutkan. Langkah pertama dicari data terkecil dari data pertama sampai data terakhir. Kemudian data terkecil ditukar dengan data pertama. Dengan demikian, data pertama sekarang mempunyai nilai paling kecil dibanding data yang lain. Langkah kedua, data terkecil kita cari mulai dari data kedua sampai terakhir. Data terkecil yang kita peroleh ditukar dengan data kedua dan demikian seterusnya sampai semua elemen dalam keadaan terurutkan. Metode ini lebih efektif dari pada metode bubble karena tidak memerlukan banyak pertukaran dan pengalokasian memori.