(advanced sorting method) - informatika unsyiah · 2016-06-26 · algoritma quick sort jika...
TRANSCRIPT
![Page 1: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/1.jpg)
Quick Sort (Advanced Sorting Method)
Dr. Taufik Fuadi Abidin, S.Si., M.Tech Irvanizam Zamanhuri, M.Sc
Jurusan Informatika
FMIPA Universitas Syiah Kuala
www.informatika.unsyiah.ac.id/tfa www.informatika.unsyiah.ac.id/irvanizam
Bahan Ajar Struktur Data dan Algoritma
![Page 2: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/2.jpg)
Outline Pertemuan Algoritma Quick Sort
Pivot dan Partisi
Ulangi Quick Sort Secara Rekursif
Analisis Kompleksitas Quick Sort
Kasus Terbaik (Best Case)
Kasus Terjelek (Worse Case)
Sumber: http://www.cs.bu.edu/fac/gkollios/cs113/Slides/quicksort.ppt
![Page 3: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/3.jpg)
Algoritma Quick Sort Jika diketahui n buah data integer (dalam array)
Jika n=1, selesai
Else, pilih satu elemen sebagai pivot dan partisi data menjadi dua bagian sedemikian hingga elemen-elemen yang lebih besar atau sama dengan pivot berada di bagian sebelah kanan dan elemen-elemen yang lebih kecil berada dibagian sebelah kiri
Ulangi Quick Sort secara rekursif terhadap kedua sub bagian tersebut
![Page 4: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/4.jpg)
Contoh Kasus Quick Sort
40 20 10 80 60 50 7 30 100
![Page 5: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/5.jpg)
Tentukan Elemen Pivot
40 20 10 80 60 50 7 30 100
![Page 6: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/6.jpg)
Partisi Array Berdasarkan Pivot Berdasarkan pivot, partisi data sedemikian hingga elemen-elemen yang lebih besar atau sama dengan pivot berada di bagian sebelah kanan dan elemen-elemen yang lebih kecil dari pivot berada dibagian sebelah kiri
![Page 7: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/7.jpg)
40 20 10 80 60 50 7 30 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
![Page 8: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/8.jpg)
40 20 10 80 60 50 7 30 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
While data[too_big_index] <= data[pivot]
++too_big_index
![Page 9: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/9.jpg)
40 20 10 80 60 50 7 30 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
While data[too_big_index] <= data[pivot]
++too_big_index
![Page 10: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/10.jpg)
40 20 10 80 60 50 7 30 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
While data[too_big_index] <= data[pivot]
++too_big_index
![Page 11: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/11.jpg)
40 20 10 80 60 50 7 30 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
While data[too_big_index] <= data[pivot]
++too_big_index
While data[too_small_index] > data[pivot]
--too_small_index
![Page 12: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/12.jpg)
40 20 10 80 60 50 7 30 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
While data[too_big_index] <= data[pivot]
++too_big_index
While data[too_small_index] > data[pivot]
--too_small_index
![Page 13: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/13.jpg)
40 20 10 80 60 50 7 30 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
While data[too_big_index] <= data[pivot]
++too_big_index
While data[too_small_index] > data[pivot]
--too_small_index
If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
![Page 14: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/14.jpg)
40 20 10 30 60 50 7 80 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
While data[too_big_index] <= data[pivot]
++too_big_index
While data[too_small_index] > data[pivot]
--too_small_index
If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
![Page 15: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/15.jpg)
40 20 10 30 60 50 7 80 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
While data[too_big_index] <= data[pivot]
++too_big_index
While data[too_small_index] > data[pivot]
--too_small_index
If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
While too_small_index > too_big_index, go to 1.
![Page 16: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/16.jpg)
40 20 10 30 60 50 7 80 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
![Page 17: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/17.jpg)
40 20 10 30 60 50 7 80 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
![Page 18: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/18.jpg)
40 20 10 30 60 50 7 80 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
![Page 19: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/19.jpg)
40 20 10 30 60 50 7 80 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
![Page 20: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/20.jpg)
40 20 10 30 60 50 7 80 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
![Page 21: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/21.jpg)
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
40 20 10 30 7 50 60 80 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
![Page 22: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/22.jpg)
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
40 20 10 30 7 50 60 80 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
![Page 23: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/23.jpg)
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
40 20 10 30 7 50 60 80 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
![Page 24: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/24.jpg)
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
40 20 10 30 7 50 60 80 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
![Page 25: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/25.jpg)
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
40 20 10 30 7 50 60 80 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
![Page 26: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/26.jpg)
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
40 20 10 30 7 50 60 80 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
![Page 27: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/27.jpg)
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
40 20 10 30 7 50 60 80 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
![Page 28: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/28.jpg)
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
40 20 10 30 7 50 60 80 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
![Page 29: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/29.jpg)
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
40 20 10 30 7 50 60 80 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
![Page 30: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/30.jpg)
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
5. Swap data[too_small_index] and data[pivot_index]
40 20 10 30 7 50 60 80 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
![Page 31: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/31.jpg)
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
5. Swap data[too_small_index] and data[pivot_index]
7 20 10 30 40 50 60 80 100 pivot_index = 4
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
![Page 32: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/32.jpg)
7 20 10 30 40 50 60 80 100
[0] [1] [2] [3] [4] [5] [6] [7] [8]
<= data[pivot] > data[pivot]
Hasil Partisi
![Page 33: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/33.jpg)
7 20 10 30 40 50 60 80 100
[0] [1] [2] [3] [4] [5] [6] [7] [8]
<= data[pivot] > data[pivot]
Secara Rekursif: Quick Sort Kembali Sub Bagian
![Page 34: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/34.jpg)
Analisis Quick Sort
Jika data random (acak) terdistribusi secara uniform maka pada kasus terbaik kompleksitas Quicksort adalah:
Kompleksitas mempartisi bagian array
Kompleksitas melakukan Quick Sort untuk setiap bagian
Kedalaman rekursif O(log2n)
Jumlak penentuan partisi O(n)
Jadi kompleksitas kasus terbaik adalah O(n log2n)
![Page 35: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/35.jpg)
2 4 10 12 13 50 57 63 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
Kasus Terjelek?
Data yang telah terurut, O(n2)
![Page 36: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/36.jpg)
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
5. Swap data[too_small_index] and data[pivot_index]
2 4 10 12 13 50 57 63 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
![Page 37: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/37.jpg)
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
5. Swap data[too_small_index] and data[pivot_index]
2 4 10 12 13 50 57 63 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
![Page 38: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/38.jpg)
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
5. Swap data[too_small_index] and data[pivot_index]
2 4 10 12 13 50 57 63 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
![Page 39: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/39.jpg)
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
5. Swap data[too_small_index] and data[pivot_index]
2 4 10 12 13 50 57 63 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
![Page 40: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/40.jpg)
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
5. Swap data[too_small_index] and data[pivot_index]
2 4 10 12 13 50 57 63 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
![Page 41: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/41.jpg)
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
5. Swap data[too_small_index] and data[pivot_index]
2 4 10 12 13 50 57 63 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
too_big_index too_small_index
![Page 42: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/42.jpg)
1. While data[too_big_index] <= data[pivot]
++too_big_index
2. While data[too_small_index] > data[pivot]
--too_small_index
3. If too_big_index < too_small_index
swap data[too_big_index] and data[too_small_index]
4. While too_small_index > too_big_index, go to 1.
5. Swap data[too_small_index] and data[pivot_index]
2 4 10 12 13 50 57 63 100 pivot_index = 0
[0] [1] [2] [3] [4] [5] [6] [7] [8]
> data[pivot] <= data[pivot]
![Page 43: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/43.jpg)
Analisis Quick Sort
Jika data random (acak) terdistribusi secara uniform maka pada kasus terjelek (data telah terurut) kompleksitas Quicksort adalah:
Kompleksitas mempartisi bagian array
Kompleksitas melakukan Quick Sort untuk setiap bagian
Kedalaman rekursif O(n)
Jumlak penentuan partisi O(n)
Jadi kompleksitas kasus terjelek adalah O(n2)
![Page 44: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/44.jpg)
Cara Menghindari Kasus Terjelek
Pilih Pivot yang merupakan median dari data di posisi data[0], data[n/2], and data[n-1]
Silahkan dicoba pada contoh yang lain!
![Page 45: (Advanced Sorting Method) - Informatika Unsyiah · 2016-06-26 · Algoritma Quick Sort Jika diketahui n buah data integer (dalam array) Jika n=1, selesai Else, pilih satu elemen sebagai](https://reader033.vdocuments.site/reader033/viewer/2022041812/5e589bc61b51530af81e2461/html5/thumbnails/45.jpg)
Questions & Discussion