Quick Sort: Pengertian, Cara Kerja, dan Implementasinya
Siti Khadijah Azzukhruf Firdausi
•
28 February 2024
•
3863
Pengurutan data secara efisien adalah tahapan krusial dalam pemrograman dan pengolahan data. Quick sort adalah salah satu metode yang sering kali digunakan untuk mengurutkan data.
Selain itu, quick sort adalah algoritma yang sering kali digunakan oleh para developer dan ahli IT. Ini karena quick sort cepat dan efisien. Untuk lebih lengkapnya, baca artikel ini sampai habis ya!
Apa yang Dimaksud dengan Quick Sort?
Quick sort adalah sebuah algoritma pengurutan yang efisien dan sering digunakan. Hal ini karena quick sort beroperasi dengan prinsip divide and conquer.
Lebih detailnya, quick sort bekerja dengan memilih sebuah elemen dari array sebagai pivot. Setelah itu, quick sort mengatur ulang elemen-elemen lain dalam array. Dengan begitu, semua elemen dengan nilai lebih kecil dari pivot berada sebelumnya, sebaliknya juga sama.
Setelah pemisahan tersebut, pivot berada pada posisi akhirnya. Kemudian, proses ini akan diulangi secara rekursif untuk sub-array di kiri dan kanan pivot. Ini dilakukan sampai seluruh array menjadi terurut.
Cara Kerja Quick Sort
Cara kerja quick sort melibatkan beberapa langkah kunci yang mengikuti prinsip divide and conquer. Beberapa langkah yang menggambarkan cara kerja quick sort adalah:
1. Pemilihan Pivot
Tahapan pertama yang menggambarkan cara kerja quick sort adalah pemilihan pivot. Di quick sort, pivot adalah kunci untuk menentukan posisi elemen dalam array berdasarkan perbandingan dengan lainnya.
Pemilihan pivot bisa dilakukan dengan berbagai cara. Misalnya, memilih elemen pertama, terakhir, tengah, atau dengan metode median of three. Metode tersebut memilih median dari elemen pertama, tengah, dan terakhir.
2. Partisi Array
Tahapan kedua yang menggambarkan cara kerja quick sort adalah partisi array. Setelah pivot dipilih, array diatur ulang sehingga semua elemen dengan nilai lebih kecil dari pivot berada di sebelah kirinya.
Lalu, elemen dengan nilai lebih besar berada di sebelah kanannya. Langkah tersebut menghasilkan dua sub-array yang belum terurut di kedua sisi pivot. Pivot sendiri berada di posisi akhir yang benar sesuai urutan.
Proses partisi ini dilakukan dengan menggunakan dua pointer atau indeks yang bergerak melintasi array dari kedua ujungnya. Ini dilakukan secara bertahap untuk menukar elemen guna memastikan pemisahan yang benar relatif terhadap pivot.
Baca Juga: Contoh Program Array C++ Seperti Apa?
3. Rekursi
Berikutnya adalah rekursi. Ini dilakukan dengan menerapkan proses yang sama (pemilihan pivot dan partisi) secara rekursif pada kedua sub-array yang terbentuk di kiri dan kanan pivot.
Rekursi ini berlanjut sampai sub-array yang ditangani hanya berisi satu elemen atau tidak ada elemen sama sekali. Artinya, sub-array tersebut sudah terurut dan tidak memerlukan pemisahan lebih lanjut.
4. Penerapan Rekursif
Terakhir adalah penerapan rekursif. Algoritma rekursif quick sort membagi masalah pengurutan menjadi bagian lebih kecil. Lalu, mengurutkan sub-masalah tersebut, dan menggabungkan hasilnya untuk mendapatkan solusi akhir.
Hal tersebut adalah esensi dari pendekatan divide and conquer. Rekursi berhenti ketika sampai pada kasus dasar. Ini adalah saat ketika sub-array yang ditangani tidak dapat dibagi lagi karena hanya berisi satu elemen atau kosong.
Kelebihan dan Kekurangan Quick Sort
Quick sort adalah salah satu algoritma pengurutan paling populer dan efisien. Meski begitu, quick sort juga memiliki kelebihan dan kekurangan. Berikut adalah beberapa kelebihan dan kekurangan quick sort:
Kelebihan Quick Sort
Beberapa kelebihan quick sort adalah:
Efisiensi Tinggi: Untuk data set besar, quick sort menunjukkan performa yang sangat baik dengan kompleksitas waktu rata-rata lebih cepat.
Pengurutan In-Place: Quick sort melakukan pengurutan langsung pada array input tanpa memerlukan ruang tambahan yang signifikan. Ini membuatnya sangat efisien dari segi penggunaan memori.
Cache-Friendly: Quick sort mengurutkan data in-place dan bekerja pada sub-array yang lebih kecil. Oleh sebab itu, metode ini cenderung memiliki performa yang baik dengan cache modern.
Mudah Diimplementasikan: Quick sort relatif mudah untuk diimplementasikan dan dapat diadaptasi untuk berbagai jenis data dan fungsi perbandingan.
Scalable: Quick sort dapat menangani data set besar dengan efisien. Ini membuatnya cocok untuk aplikasi yang memproses jumlah data besar.
Kekurangan Quick Sort
Berikut adalah beberapa kekurangan quick sort yang perlu dipertimbangkan:
Tidak Stabil: Quick sort bukan algoritma pengurutan yang stabil. Artinya, urutan relatif dari elemen-elemen yang sama dapat berubah setelah pengurutan. Ini mungkin menjadi masalah dalam beberapa kasus penggunaan khusus di mana kestabilan diperlukan.
Sensitif terhadap Pemilihan Pivot: Efisiensi quick sort sangat bergantung pada cara pemilihan pivot. Pemilihan pivot yang tidak optimal dapat mengurangi efisiensi pengurutan.
Overhead Rekursi: Meskipun rekursi memungkinkan struktur kode yang bersih dan elegan, ini juga menimbulkan overhead tambahan. Dalam kasus ekstrim dengan data set sangat besar dan kedalaman rekursi tinggi, ini dapat menyebabkan stack overflow.
Baca Juga: 10 Fungsi yang Mungkin Diperlukan dalam Proyek Typescript Kamu
Implementasi Quick Sort
Untuk memahami quick sort secara lebih dalam, MinDi siapkan contoh implementasi kodenya. Implementasi quick sort ini digunakan untuk mengurutkan array [10, 7, 8, 9, 1, 5]. Berikut adalah kode Python untuk implementasi tersebut:
def quick_sort(arr):
# Basis rekursi: array dengan 0 atau 1 elemen sudah terurut
if len(arr) <= 1:
return arr
else:
# Memilih pivot, di sini kita memilih elemen terakhir sebagai pivot
pivot = arr[-1]
left = [] # Elemen lebih kecil dari pivot
right = [] # Elemen lebih besar dari pivot
for i in range(len(arr) - 1): # Mengabaikan elemen pivot saat ini
if arr[i] < pivot:
left.append(arr[i])
else:
right.append(arr[i])
# Menggabungkan hasil rekursif dari sub-array kiri, pivot, dan sub-array kanan
return quick_sort(left) + [pivot] + quick_sort(right)
# Contoh penggunaan
arr = [10, 7, 8, 9, 1, 5]
sorted_arr = quick_sort(arr)
print("Array terurut:", sorted_arr)
Lalu, output dari kode tersebut adalah:
[1, 5, 7, 8, 9, 10]
Demikian penjelasan lengkap mengenai quick sort mulai dari pengertian hingga implementasinya. Penjelasan tersebut menunjukkan bahwa quick sort adalah salah satu algoritma pengurutan yang cukup efisien untuk digunakan dalam data set besar.
Terkait dengan data, MinDi ada rekomendasi program buat kamu yang tertarik mendalaminya. Program rekomendasi MinDi adalah Bootcamp Data Science Dibimbing.id.
Program ini cocok buat kamu yang mau belajar segala hal terkait data science mulai dari nol hingga mahir. Pembelajarannya lengkap dan didasari oleh silabus beginner-friendly.
Kamu bisa belajar teori, konsep dasar, aplikasi data, tools, hingga praktik dengan real-case project. Intinya, kamu bakal dibimbing sampai jadi! Tertarik? Yuk, segera daftar dan mulai karirmu di data science bareng Dibimbing.id!
Tags
Siti Khadijah Azzukhruf Firdausi
Khadijah adalah SEO Content Writer di Dibimbing dengan pengalaman menulis konten selama kurang lebih setahun. Sebagai lulusan Bahasa dan Sastra Inggris yang berminat tinggi di digital marketing, Khadijah aktif berbagi pandangan tentang industri ini. Berbagai topik yang dieksplorasinya mencakup digital marketing, project management, data science, web development, dan career preparation.