• Tidak ada hasil yang ditemukan

77 12 35 42 5 101 0 1 2 3 4 5 N = 6

N/A
N/A
Nguyễn Gia Hào

Academic year: 2023

Membagikan "77 12 35 42 5 101 0 1 2 3 4 5 N = 6"

Copied!
38
0
0

Teks penuh

(1)

08. Algoritma Pengurutan

Bubble Sort dan Shell Sort

ARNA FARIZA

YULIANA SETIOWATI

(2)

Capaian Pembelajaran

 Mahasiswa mampu memahami algoritma pengurutan yaitu Bubble Sort dan Shell Sort

 Mahasiswa dapat mengimplementasikan fungsi algoritma pengurutan Bubble Sort dan Shell Sort

(3)

Materi

 Algoritma Bubble Sort

 Algoritma Shell Sort

(4)

Bubble Sort

• Algoritma pengurutan dengan dengan cara melakukan penukaran data dengan tepat disebelahnya secara terus menerus sampai bisa dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan. Jika tidak ada perubahan berarti data sudah terurut.

• Disebut pengurutan gelembung karena masing-masing kunci akan dengan lambat menggelembung ke posisinya yang tepat.

• Disebut juga exchange sort.

(5)

Algoritma Bubble Sort

1. i  1

2. selama (i < N-1) kerjakan baris 3 s/d 7 3. j  N-1

4. selama (j>=i) kerjakan baris 5 s/d 6

5. jika (Data[j-1]>Data[j]) maka tukar Data[j-1] dengan Data[j]

6. j  j - 1 ;

7. i  i + 1 ;

(6)

Cara Kerja

Algoritma Bubble Sort

Terdapat 6 data yang akan diurutkan menggunakan Algoritma Bubble Sort

.

12 77

42 35 5 101

0 1 2 3 4 5

N = 6

(7)

Cara Kerja

Algoritma Bubble Sort

Dimulai dari i=1 karena i<(N-1), 1<5 maka proses looping 1 dilanjutkan.

Tentukan j=N-1=5, sehingga j=5, selama j>=i yaitu 5>1 maka proses looping 2 dilanjutkan.

Jika Data[j-1]>Data[j] maka tukar data tersebut. Data[4] > Data[5], 5 > 101 bernilai false, maka data tidak ditukar.

Selanjutnya j--, sehingga j = 4

I = 1 J = 5

5 > 101 ? No Swap

0 1 2 3 4 5

No Swap

(8)

12 77

42 35 5 101

0 1 2 3 4 5 I = 1 J = 4

77 > 5 ? Swap

Swap

Cara Kerja

Algoritma Bubble Sort

i=1, j=4

Jika Data[j-1]>Data[j] maka tukar data tersebut, Data[3] > Data[4], 77 > 5 bernilai true, maka data ditukar.

Selanjutnya j--, sehingga j = 3

(9)

Cara Kerja

Algoritma Bubble Sort

i=1, j=3

Jika Data[j-1]>Data[j] maka tukar data tersebut, Data[2] > Data[3], 12 > 5 bernilai true, maka data ditukar.

Selanjutnya j--, sehingga j = 2

12 5

42 35 77 101

0 1 2 3 4 5 I = 1 J = 3

12 > 5 ? Swap

Swap

(10)

Cara Kerja

Algoritma Bubble Sort

i=1, j=2

Jika Data[j-1]>Data[j] maka tukar data tersebut. Data[1] > Data[2], 35 > 5 bernilai true, maka data ditukar.

Selanjutnya j--, sehingga j = 1

5 12

42 35 77 101

0 1 2 3 4 5 I = 1 J = 2

35 > 5 ? Swap

Swap

(11)

35 12

42 5 77 101

0 1 2 3 4 5 I = 1 J = 1

42 > 5 ? Swap

Swap

Cara Kerja

Algoritma Bubble Sort

i=1, j=1

Jika Data[j-1]>Data[j] maka tukar data tersebut. Data[0] > Data[1], 42 > 5 bernilai true, maka data ditukar.

Selanjutnya j--, sehingga j = 0, karena j>=i, 0>=1 bernilai false maka proses looping 2 selesai.

Selanjutnya, i++ menjadi i=2

(12)

Cara Kerja

Algoritma Bubble Sort

Dimulai i=2 karena i<(N-1), 2<5, maka proses looping 1 dilanjutkan.

Tentukan j=N-1=5, sehingga j=5, selama j>=i yaitu 5>2 maka proses looping 2 dilanjutkan.

Jika Data[j-1]>Data[j] maka tukar data tersebut. Data[4] > Data[5], 77 < 101 bernilai false, maka data tidak ditukar.

Selanjutnya j--, sehingga j = 4

I = 2 J = 5

77 > 101 ? No Swap

35 12

5 42 77 101

0 1 2 3 4 5

No Swap

(13)

I = 2 J = 4

12 > 77 ? No Swap

35 12

5 42 77 101

0 1 2 3 4 5

No Swap

Cara Kerja

Algoritma Bubble Sort

i=2, j=4

Jika Data[j-1]>Data[j] maka tukar data tersebut. Data[3] > Data[4], 12>77 bernilai false, maka data tidak ditukar.

Selanjutnya j--, sehingga j = 3

(14)

Cara Kerja

Algoritma Bubble Sort

i=2, j=3

Jika Data[j-1]>Data[j] maka tukar data tersebut. Data[2] > Data[3], 35>12 bernilai true, maka data ditukar.

Selanjutnya j--, sehingga j = 2

35 12

5 42 77 101

0 1 2 3 4 5 I = 2 J = 3

35 > 12 ? Swap

Swap

(15)

I = 2 J = 2

42 > 12 ? Swap

12 35

5 42 77 101

0 1 2 3 4 5

Swap

Cara Kerja

Algoritma Bubble Sort

i=2, j=2

Jika Data[j-1]>Data[j] maka tukar data tersebut. Data[1] > Data[2], 42>12 bernilai true, maka data ditukar.

Selanjutnya j--, sehingga j = 1, karena j>=i, 1>=2 bernilai false maka proses looping 2 selesai.

Selanjutnya, i++ menjadi i=3

(16)

Cara Kerja

Algoritma Bubble Sort

Dimulai i=3 karena i<(N-1), 3<5, maka proses looping 1 dilanjutkan.

Tentukan j=N-1=5, sehingga j=5, selama j>=i yaitu 5>3 maka proses looping 2 dilanjutkan.

Jika Data[j-1]>Data[j] maka tukar data tersebut. Data[4] > Data[5], 77 < 101 bernilai false, maka data tidak ditukar.

Selanjutnya j--, sehingga j = 4

42 35

5 12 77 101

0 1 2 3 4 5

I = 3 J = 5

77 > 101 ? No Swap

No Swap

(17)

Cara Kerja

Algoritma Bubble Sort

i=3, j=4

Jika Data[j-1]>Data[j] maka tukar data tersebut. Data[3] > Data[4], 35>77 bernilai false, maka data tidak ditukar.

Selanjutnya j--, sehingga j = 3

42 35

5 12 77 101

0 1 2 3 4 5

I = 3 J = 4

35 > 77 ? No Swap No Swap

(18)

42 35

5 12 77 101

0 1 2 3 4 5

I = 3 J = 3

42 > 35 ? Swap Swap

Cara Kerja

Algoritma Bubble Sort

i=3, j=3

Jika Data[j-1]>Data[j] maka tukar data tersebut. Data[2] > Data[3], 42>35 bernilai true, maka data tidak ditukar.

Selanjutnya j--, sehingga j = 2, karena j>=i, 2>=3 bernilai false maka proses looping 2 selesai.

Selanjutnya, i++ menjadi i=4

(19)

Cara Kerja

Algoritma Bubble Sort

Dimulai i=4 karena i<(N-1), 4<5, maka proses looping 1 dilanjutkan.

Tentukan j=N-1=5, sehingga j=5, selama j>=i yaitu 5>4 maka proses looping 2 dilanjutkan.

Jika Data[j-1]>Data[j] maka tukar data tersebut. Data[4] > Data[5], 77 < 101 bernilai false, maka data tidak ditukar.

Selanjutnya j--, sehingga j = 4

35 42

5 12 77 101

0 1 2 3 4 5

I = 4 J = 5

77 > 101 ? No Swap No Swap

(20)

I = 4 J = 4

42 > 77 ? No Swap

0 1 2 3 4 5 No Swap

Cara Kerja

Algoritma Bubble Sort

i=4, j=4

Jika Data[j-1]>Data[j] maka tukar data tersebut. Data[3] > Data[4], 42>77 bernilai false, maka data tidak ditukar.

Selanjutnya j--, sehingga j = 3, karena j>=i, 3>=4 bernilai false maka proses looping 2 selesai.

Selanjutnya, i++ menjadi i=5, karena i<N-1, 5<5 bernilai false, maka proses looping 1 selesai

(21)

Analisa Bubble Sort

BEST CASE:

- Array sudah dalam keadaan terurut naik - Jumlah pembandingan key : n-1

- Jumlah swap = 0

- Jumlah pergeseran : 0

(22)

Analisa Bubble Sort

WORST CASE

- Array dalam urutan kebalikannya - Jumlah pembandingan key :

(1 + 2 + .. + n-1) = n * (n-1) / 2

- Jumlah swap = (1 + 2 + .. + n-1) = n * (n-1) / 2

- Jumlah pergeseran : 3 * n * (n-1) / 2

(23)

Shell Sort

(24)

Algoritma Shell Sort

Metode ini disebut juga dengan metode pertambahan menurun (diminishing increment sort).

Metode ini dikembangkan oleh Donald L. Shell pada tahun 1959, sehingga sering disebut dengan Metode Shell Sort.

Metode ini mengurutkan data dengan cara membandingkan suatu data

dengan data lain yang memiliki jarak tertentu – sehingga membentuk

sebuah sub-list-, kemudian dilakukan penukaran bila diperlukan

(25)

Pertama-tama adalah menentukan jarak mula-mula dari data yang akan dibandingkan, yaitu N / 2. Data pertama dibandingkan dengan data dengan jarak N / 2. Apabila data pertama lebih besar dari data ke N / 2 tersebut maka kedua data tersebut ditukar. Kemudian data kedua dibandingkan dengan jarak yang sama yaitu N / 2. Demikian seterusnya sampai seluruh data dibandingkan sehingga semua data ke-j selalu lebih kecil daripada data ke-(j + N / 2).

Algoritma Shell Sort

(26)

Algoritma Shell Sort

Pada proses berikutnya, digunakan jarak (N / 2) / 2 atau N / 4. Data pertama dibandingkan dengan data dengan jarak N / 4. Apabila

data pertama lebih besar dari data ke N / 4 tersebut maka kedua data tersebut ditukar. Kemudian data kedua dibandingkan dengan jarak yang sama yaitu N / 4. Demikianlah seterusnya hingga

seluruh data dibandingkan sehingga semua data ke-j lebih kecil daripada data ke-(j + N / 4).

Pada proses berikutnya, digunakan jarak (N / 4) / 2 atau N / 8.

Demikian seterusnya sampai jarak yang digunakan adalah 1.

(27)

Proses Shell Sort

Jarak yang dipakai didasarkan pada increment value atau sequence number k

Misalnya Sequence number yang dipakai adalah 5,3,1. Tidak ada pembuktian di sini bahwa bilangan-bilangan tersebut adalah

sequence number terbaik

Setiap sub-list berisi setiap elemen ke-k dari kumpulan elemen yang

asli

(28)

Proses Shell Sort

Contoh: Jika k = 5 maka sub-list nya adalah sebagai berikut : - s[0] s[5] s[10] ...

- s[1] s[6] s[11] … - s[2] s[7] s[12] … - dst

Begitu juga jika k = 3 maka sub-list nya adalah:

- s[0] s[3] s[6] ...

- s[1] s[4] s[7] …

(29)

Proses Shell Sort

Buatlah sub-list yang didasarkan pada jarak (Sequence number) yang dipilih Urutkan masing-masing sub-list tersebut

Gabungkan seluruh sub-list

(30)

Urutkan sekumpulan elemen di bawah ini , misalnya diberikan sequence number : 5, 3, 1

30 62 53 42 17 97 91 38

[0] [1] [2] [3] [4] [5] [6] [7]

Proses Shell Sort

(31)

Proses Shell Sort

30 62 53 42 17 97 91 38

30 62 53 42 17 97 91 38

S[3]

S[0] S[5]

S[1] S[6]

S[2] S[7]

Step 1: Buat sub list k = 5

Step 2 - 3: Urutkan sub list & gabungkanS[0] < S[5] OK S[1] < S[6] OK

S[2] > S[7] not OK.

30 62 53 42 17 97 91 38

[0] [1] [2] [3] [4] [5] [6] [7]

53

38

(32)

Proses Shell Sort

30 62 53 42 17 97 91 38

S[0] S[3] S[6]

S[1] S[4] S[7]

S[2] S[5]

30 62 38 42 17 97 91 53

[0] [1] [2] [3] [4] [5] [6] [7]

Step 1: Buat sub list k = 3

Step 2 - 3: Urutkan sub list & gabungkan S[0] S[3] S[6] 30, 42, 91 OK

S[1] S[4] S[7] 62, 17, 53 not OK

30 62 17 38 42 17 97 91 53 53 62

(33)

Proses Shell Sort

30 62 53 42 17 97 91 38

S[0] S[1] S[2] S[3] S[4] S[5] S[6] S[7]

30 17 38 42 53 97 91 62

[0] [1] [2] [3] [4] [5] [6] [7]

Step 1: Buat sub list k =1

Step 2 - 3: Urutkan sub list & gabungkan

30 17 38 42 53 97 91 62

17 62 97

Sorting akan seperti insertion sort

30

(34)

Algoritma Metode Shell Sort

1. jarak <- N

2. selama (jarak>1) kerjakan 3-12 3. jarak <- jarak / 2

4. Sudah <- 1

5. selama Sudah = 1 kerjakan 6-12

6. Sudah <- 0

7. j <- 0

8. selama (j<N-jarak) kerjakan 9-13

9. i <- j + jarak

10. if (Data[j] > Data[i])

11. Tukar(&Data[j],&Data[i]) 12. Sudah=1 13. j++ ;

(35)

Analisa Metode Shell Sort

Running time dari metode Shell Sort bergantung pada beratnya pemilihan sequence number.

Disarankan untuk memilih sequence number dimulai dari N/2, kemudian membaginya lagi dengan 2, seterusnya hingga

mencapai 1.

Shell sort menggunakan 3 nested loop, untuk

merepresentasikan sebuah pengembangan yang substansial

terhadap metode insertion sort

(36)

Pembandingan Running time (millisecond) antara insertion and Shell

N insertion Shellsort

1000 122 11

2000 483 26

4000 1936 61

8000 7950 153

16000 32560 358

(37)

Kesimpulan

Algoritma Bubble Sort adalah Algoritma pengurutan dengan dengan cara

melakukan penukaran data dengan tepat disebelahnya secara terus menerus sampai bisa dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan. Jika tidak ada perubahan berarti data sudah terurut.

Algoritma Shell Sort adalah Algoritma ini mengurutkan data dengan cara

membandingkan suatu data dengan data lain yang memiliki jarak tertentu –

sehingga membentuk sebuah sub-list-, kemudian dilakukan penukaran bila

diperlukan

(38)

Latihan Soal

Urutkan data di bawah ini dengan Algoritma Bubble Sort dan Shell Sort, jelaskan pula langkah- langkahnya !

9 1 2 5 6 4

Referensi

Dokumen terkait

130 DATA HASIL BELAJAR SISWA SIKLUS I NO Nama Siswa Nomor Soal Essay Jumlah Skor Nilai Ket... 131 NO Nama Siswa Nomor Soal Jumlah Skor Nilai

سرد مرت نایم تارمن کیمانیدومرت1 فیدر ییاسانش هرامش زا ( مرت نایم هرمن8 ) فیدر ییاسانش هرامش زا ( مرت نایم هرمن8 ) 1 39501346 3.15 1 39303328 3.1 2 39402799 2.85 2 39503002 4.75 3 39502866 1.1 3 39601342 5.05 4 39305254 2.35 4 39503470 4.1 5 39304215 2.55 5 39302051 3.65 6 39602234 6.55 6 39502905 4.6 7 39602525 2.55 7 39406468 3.9 8 39503876 1.65 8 39304252 1.2 9 39506283 4.4 9 39206562 1.45 10 39601427 1.2 10 39404813 1.75 11 39501540 1.2 11 39306914 1.55 12 39603272 3.2 12 39304150 3.95 13 39403469 2.2 13 39207069 1.45 14 39501802 1.45 14 39404158 2.9 15 39407176 5.05 15 39406329 1.35 16 39306591 3.9 16 39602306 1.9 17 39306406 1.1 17 39501957 2 18 39601471 2.9 18 39403517 0.7 19 39602456 0.25 19 39503286 5.3 20 39600852 2.25 20 39503377 5.05 21 39503257 5.6 21 39602384 1.4 22 39602048 3.2 22 39306219 1.2 23 39505879 1.75 23 39503239 5.25 24 39504196 1 24 39202917 5.2 25 39407327 0 25 39303636 0.4 26 39401299 1.3 26 39402030 3.85 27 39101448 6.65 27 39401616 3.75 28 39406539 1.3 28 39401859 1.5 29 39101119 2.85 29 39601839 3.55 39101119 2.85 29 39601839 3.55 30 39404163 0.8 30 39406575 1.65 31 39504685 1.45 31 39601745 4.05 32 39503610 2.3 32 39101696 4.65 33 39405063 1.2 33 39101697 6.2 34 39400590 0.7 34 39203789 2.55 35 39402470 3.75 35 39602936 3.1 36 39703236 0 36 39407494 1.6 37 39306360 0 37 39602098 5.55 38 39302852 2.3 38 39601218 4.1 39 39504483 2.75 40 39503795 2.05 41 39400906 4.15 42 39401785 1.6 43 39501401 0.8 44 39303052 2.1

[r]

[r]

[r]

An example: incrementing tens • Less efficient: count the dots each time a new strip is added including the 4 dot strip • Slightly more efficient : count the first 10 strip in ones