Yang Perlu Anda Ketahui Tentang Quicksort di C ++



Artikel ini akan memberi Anda pengetahuan terperinci dan komprehensif tentang cara menerapkan Quicksort di C ++ dengan Contoh.

Ada banyak algoritma pengurutan. Menemukan yang tepat untuk aplikasi Anda adalah tugas yang membutuhkan pemahaman singkat tentang faktor-faktor seperti kinerja, kompleksitas waktu, panjang kode, dll. Dari algoritme tertentu. Dalam posting ini, kita akan melihat semua konsep penting yang diperlukan untuk mengimplementasikan Quicksort di C ++ dalam urutan berikut:

Memahami Algoritma Quicksort

Seperti Gabungkan Sortir , Quicksort mengikuti strategi membagi dan menaklukkan. Dengan menggunakan strategi divide and conquer, kami membagi masalah menjadi banyak subproblem dan menyelesaikannya secara rekursif. Pertama, kita akan memahami keseluruhan proses langkah demi langkah dan setelah itu, dengan bantuan contoh, kita akan mengembangkan pemahaman yang mendalam tentang keseluruhan proses.





  1. Pertama, kita akan meminta array yang tidak disortir dari pengguna.

  2. Setelah kita memiliki array yang tidak disortir, kita perlu memilih nilai pivot dari array. Kita bisa memilih nilai apapun.



  3. Setelah kita memilih titik pivot setelah itu kita perlu mengatur elemen lain dari larik sedemikian rupa sehingga, semua elemen yang kurang dari nilai pivot harus ditempatkan di sebelah kanan nilai pivot dan semua elemen lebih besar dari pivot nilai harus ditempatkan di sebelah kanan nilai pivot.

  4. Kami melakukan langkah 3 sampai kami mendapatkan array yang diurutkan.

Sekarang, mari kita pertimbangkan contoh dan terapkan algoritme dan lihat cara kerjanya.



Halo [5, 4, 1, 11, 9, 6, 2, 3] untuk contoh ini, kami akan selalu menganggap poros sebagai elemen paling kanan dari daftar.

Quicksort di C ++

Mari kita melalui setiap langkah dan memahami logika yang kita gunakan untuk menyelesaikan masalah.

  • Pertama, kami memilih '3' sebagai poros dan mengatur semua elemen kurang dari '3' di kanan dan semua elemen yang lebih besar dari '3' di kanan.

  • Saat ini, kami memiliki 2 submasalah. Mari kita selesaikan subproblem di sebelah kanan terlebih dahulu. Kami memilih salah satu sebagai poros kami dan menempatkan '2' di kanan.

  • Untuk menyelesaikan subproblem kedua kita memilih '6' sebagai poros kita dan menempatkan elemen seperti yang kita diskusikan sebelumnya.

  • Kami memiliki 2 submasalah lagi. Yang pertama diselesaikan dengan memilih 4 sebagai poros dan yang kedua diselesaikan dengan memilih 9 sebagai poros. Akhirnya, Kami memiliki array yang diurutkan dengan elemen yang ditempatkan pada indeks garis bawah.

Catatan- Hal penting untuk dipahami di sini adalah bahwa semua operasi berlangsung dalam larik yang sama. Array baru tidak dibuat.

Pseudocode untuk Quicksort di C ++

QuickSort (array [], start_index, end_index) {if (start_index

Program Quicksort di C ++

Kami memahami algoritme dan mengembangkan pemahaman yang mendalam tentang cara kerja algoritme. Mari kita implementasikan Quicksort di C ++ dan tulis program untuk mengurutkan array.

#include menggunakan namespace std void swap_elements (int * a, int * b) {int temp = * a * a = * b * b = temp} partisi int (int array [], int start_index, int end_index) {int pivot = larik [end_index] int i = (start_index - 1) untuk (int j = start_index j<= end_index- 1 j++) { if (array[j] <= pivot) { i++ swap_elements(&array[i], &array[j]) } } swap_elements(&array[i + 1], &array[end_index]) return (i + 1) } void quickSort(int array[], int start_index, int end_index) { if (start_index < end_index) { int partition_index = partition(array, start_index, end_index) quickSort(array, start_index, partition_index - 1) quickSort(array, partition_index + 1, end_index) } } void printArray(int array[], int number) { int i cout<<'Sorted Array: ' for (i = 0 i < number i++) cout << array[i] << ' ' cout << endl } int main() { int Hello[30] int i int NumberofElements cout<>Jumlah biaya Elemen<<'Enter the elements one by one: ' for(i=0i>Halo [i]} quickSort (Halo, 0, NumberofElements-1) printArray (Halo, NumberofElements) return 0}

Keluaran:

Kompleksitas Waktu

Mari kita bahas tentang aspek terpenting dari setiap algoritma pengurutan, yaitu kompleksitas waktu. Ini memberi tahu kita tentang kinerja algoritme dalam berbagai skenario. Nilai-nilai ini dapat membantu kita dalam memutuskan apakah kita dapat menggunakan algoritma ini untuk aplikasi kita.

apa kelas scanner di java
  • Kasus terbaik- Di)
  • Kasus rata-rata- (nlogn)
  • Kasus terburuk- Di2)

Dengan ini, kita sampai pada akhir artikel Quicksort in C ++ ini. Jika Anda ingin mempelajari lebih lanjut, lihat oleh Edureka, perusahaan pembelajaran online terpercaya. Kursus pelatihan dan sertifikasi Java J2EE dan SOA dari Edureka dirancang untuk melatih Anda untuk konsep inti dan lanjutan Java bersama dengan berbagai kerangka kerja Java seperti Hibernate & Spring.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar blog ini dan kami akan menghubungi Anda kembali secepatnya.