SORTINGsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/BAB-III...Buble sort (Pengurutan Gelembung)...
-
Upload
nguyenngoc -
Category
Documents
-
view
222 -
download
0
Transcript of SORTINGsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/BAB-III...Buble sort (Pengurutan Gelembung)...
Defenisi
Proses pengurutan data yang sebelumnya disusun secara acak sehingga tersusun secara teratur menurut suatu aturan tertentu.
Pada umumnya pengurutan ada 2 jenis
Ascending (Naik)
Descending (turun)
Contoh :
• Data acak :
5 6 8 1 3 25 10
• Terurut Ascending:
1 3 5 6 8 10 25
• Terurut Descending:
25 10 8 6 5 3 1
Metode
Ada beberapa metode pengurutan yaitu ;
1. Buble sort (Pengurutan Gelembung)
2. Selection Sort
3. Insertion Sort
4. Shell Sort
Prinsip
• Metode Buble dan selection menggunakan prinsip pertukaran elemen dalam proses pengurutan sehingga keduanya dinamakan dengan pertukaran (exchane sort)
• Metode Insertion dan Shell menggunakan prinsip geser dan sisip elemen dan proses pengurutan
• Ke-4 metode menggunakan operasi perbandingan elemen larik untuk menemukan urutan yang tepat.
Buble sort (Pengurutan Gelembung)
Dilakukan dengan prinsip gelebung air
Jika terurut menaik maka elemen yang terkecil dipindahkan keujung kiri melalui proses pertukaran
Proses ini dilakukan sebanyak N-1, N adalah ukuran larik L[N]
1 I, I+1 N Sudah terurut Belum terurut
Algoritma Pengurutan Gelembung
(Terurut Menaik)
• Untuk setiap pass I = 1,2,…,N-1 Lakukan :
Mulai dari elemen K = N, N-1,…., I+1 Lakukan :
1.1 Bandingkan L[K] dengan L[K-1]
1.2 Pertukarkan L[K] dengan L[K-1] Jika L[K] < L[K-1]
Algoritma
Deklarasi : int I,K,Temp; Deskripsi : for (I 1, I < N, I++) { for (K=N, K>i+1,K++) { if L[K] < L[K-1] //Tukar L[K] dengan L[K-1] { Temp L[K] L[K] L[K-1] L[K-1] Temp } } };
Proses pertukaran Temp L[K], L[K] L[K-1], L[K-1] Temp
Procedure tukar (int a,b)
Deklarasi :
int temp;
Deskripsi :
temp a
a b
b temp
Deklarasi : int I,K,Temp; Deskripsi : for (I 1, I < N, I++)
{ for (K=N, K>2,K++) { if L[K] < L[K-1] //Tukar L[K] dengan L[K-1] { tukar (L[K], L[K-1]) } } };
Metode Pengurutan Pilih
(Selection Sort)
• Metode ini memiliki konsep memilih data yang maksimum/minimum dari suatu kumpulan data larik L, lalu menempatkan data tersebut ke elemen paling akhir atau paling awal sesuai pengurutan yang diinginkan
Metode Pengurutan Pilih
(Selection Sort)
• Data maksimum/minimum yang diperoleh, diasingkan ke tempat lain, dan tidak diikutsertakan pada proses pencarian data maksimum/minimum berikutnya
Perhatikan ilustrasi berikut
• Misalkan ada sekumpulan data acak berjumlah n elemen yang disimpan di dalam larik L, akan diurut menaik, maka langkah-langkah yang harus dilakukan adalah:
• Menentukan jumlah iterasi, yaitu pass = n – 1.
• Untuk setiap pass ke-i = 1,2,...,pass, lakukan:
• Cari elemen terbesar (maks) dari elemen ke-i sampai ke-n.
• Pertukarkan maks dengan elemen ke-i.
• Kurangin n satu (n = n – 1).
Rincian tiap-tiap pas adalah sebagai
berikut:
• pass 1 • Cari elemen maksimum di dalam L[0...(n-1)]. • Pertukarakan elemen maksimum dengan elemen L[n-1].
• pass 2 • Cari elemen maksimum di dalam L[0...(n-2)]. • Pertukarakan elemen maksimum dengan elemen L[n-2].
• pass 3 • Cari elemen maksimum di dalam L[0...(n-3)]. • Pertukarakan elemen maksimum dengan elemen L[n-3].
. . . • pass 4
• Cari elemen maksimum di dalam L[0...1]. • Pertukarakan elemen maksimum dengan elemen L[1].
(Contoh Halaman 43 )
Algoritma
Deklarasi : int I,J, Imaks, Maks,Temp; Deskripsi : for (I N, I >1, I--) // jumlah pas = n-1 { Imaks 1 Maks L[1] for (J 2, J<I+1,J++) { if (L[J] > maks) { Imaks J Maks L[J] } }
{ Temp L[I] L[I] Maks L[Imaks] Temp } };
Metode Pengurutan Sisip
(Insertion Sort)
• Metode ini dilakukan dengan cara menyisipkan elemen larik pada posisi yang tepat. Pencarian posisi yang tepat dilakukan dengan melakukan pencarian beruntun di dalam larik.
Metode Pengurutan Sisip
(Insertion Sort)
• Untuk setiap pass ke-i = 1,2,...,n-1 lakukan:
• X = L[i]
• Sisipkan x pada tempat yang sesuai anatara L[0]...L[i].
Rincian tiap-tiap pass adalah sebagai
berikut:
Dianggap pass 0 : L[0] dianggap sudah pada tempatnya. • pass 1 x = L[1] harus dicari tempatnya yang tepat pada L[0..1] dengan cara
menggeser elemen L[0..0] ke kanan bila L[0..0] lebih besar daripada L[1]. Misalkan posisi yang tepat adalah k, sisipkan L[1] pada L[k].
• pass 2 x = L[2] harus dicari tempatnya yang tepat pada L[0..2] dengan cara
menggeser elemen L[0..1] ke kanan bila L[0..1] lebih besar daripada L[2]. Misalkan posisi yang tepat adalah k, sisipkan L[2] pada L[k].
. . • pass n-1 x = L[n-1] harus dicari tempatnya yang tepat pada L[0..(n-1)]
dengan cara menggeser elemen L[0..(n-2)] ke kanan bila L[0..(n-2)] lebih besar daripada L[n-1]. Misalkan posisi yang tepat adalah k, sisipkan L[n-1] pada L[k].
Deklarasi int I,J,y; bolean ketemu; Deskripsi for(i=1;i<N;i++) { /* sisipkan L[i] ke dalam
bagian yang sudah terurut */
x = L[i]; /*cari posisi yang tepat
untuk x di dalam L[0..i-1] sambil menggeser */
j=i-1; ketemu = false;
while ((j>=0)&&(!ketemu))
{ if(x < L[j]) { L[j+1] = L[j]; j--; } else { ketemu = true; } } /* j < 1 or ketemu */ L[j+1] = x; } }