Yang Anda Perlu Tahu Mengenai Quicksort di C ++



Artikel ini akan memberi anda pengetahuan terperinci dan komprehensif tentang bagaimana melaksanakan Quicksort di C ++ dengan Contoh.

Terdapat sebilangan besar algoritma penyortiran. Mencari yang sesuai untuk aplikasi anda adalah tugas yang memerlukan pemahaman ringkas mengenai faktor seperti prestasi, kerumitan masa, panjang kod, dll algoritma tertentu. Dalam catatan ini, kita akan melihat semua konsep penting yang diperlukan untuk melaksanakan Quicksort dalam C ++ dalam urutan berikut:

Memahami Algoritma Quicksort

Seperti Gabungkan Susun , Quicksort mengikuti strategi perpecahan dan penaklukan. Dengan menggunakan strategi membahagi dan menaklukkan, kita membahagikan masalah itu kepada banyak masalah dan menyelesaikannya secara berulang. Pertama, kita akan memahami keseluruhan proses selangkah demi selangkah dan selepas itu, dengan bantuan contoh, kita akan mengembangkan pemahaman yang mendalam mengenai keseluruhan proses.





  1. Pertama, kami akan meminta susunan yang tidak disusun dari pengguna.

  2. Setelah kita mempunyai susunan yang tidak disusun, kita perlu memilih nilai pangsi dari tatasusunan. Kita boleh memilih sebarang nilai.



    kelas tanpa nama di java]
  3. Sebaik sahaja kita memilih titik pangsi selepas itu kita perlu menyusun unsur array yang lain sedemikian rupa sehingga, semua elemen yang kurang daripada nilai pangsi harus diletakkan di sebelah kanan nilai pangsi dan semua elemen lebih besar daripada pangsi nilai hendaklah diletakkan di sebelah kanan nilai pangsi.

  4. Kami melakukan langkah 3 sehingga kami mendapat susunan yang disusun.

Sekarang, mari pertimbangkan satu contoh dan laksanakan algoritma dan lihat bagaimana ia berfungsi.



Helo [5, 4, 1, 11, 9, 6, 2, 3] untuk contoh ini, kami akan selalu menganggap pangsi sebagai elemen paling kanan dalam senarai.

Quicksort dalam C ++

Mari kita lalui setiap langkah dan fahami logik yang kita gunakan untuk menyelesaikan masalah.

  • Pertama, kami memilih ‘3’ sebagai pangsi kami dan menyusun semua elemen kurang dari ‘3’ di sebelah kanan dan semua elemen lebih besar daripada ‘3’ ke kanan.

  • Pada ketika ini, kita mempunyai 2 masalah. Mari kita selesaikan dahulu masalah di sebelah kanan. Kami memilih yang paling penting dan meletakkan ‘2’ di sebelah kanan.

  • Untuk menyelesaikan masalah yang kedua, kami memilih ‘6’ sebagai pivot kami dan meletakkan elemen seperti yang telah kami bincangkan sebelumnya.

  • Kami mempunyai 2 masalah lain. Yang pertama diselesaikan dengan memilih 4 sebagai pangsi dan yang kedua diselesaikan dengan memilih 9 sebagai pangsi. Akhirnya, Kami mempunyai susunan yang disusun dengan elemen yang diletakkan pada indeks garis bawah.

Catatan- Perkara penting untuk difahami di sini adalah bahawa semua operasi berlaku dalam susunan yang sama. Susunan baru tidak dibuat.

Pseudocode untuk Quicksort dalam C ++

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

Program Quicksort dalam C ++

Kami memahami algoritma dan mengembangkan pemahaman yang mendalam mengenai cara kerja algoritma. Mari kita laksanakan Quicksort dalam C ++ dan tulis program untuk menyusun array.

#masuk menggunakan ruang nama std void swap_elements (int * a, int * b) {int temp = * a * a = * b * b = temp} int partition (int array [], int start_index, int end_index) {int pivot = array [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<>Kos NumberofElements<<'Enter the elements one by one: ' for(i=0i>Hello [i]} quickSort (Hello, 0, NumberofElements-1) printArray (Hello, NumberofElements) kembali 0}

Pengeluaran:

Kerumitan Masa

Mari kita bincangkan aspek terpenting dari mana-mana algoritma penyortiran, iaitu kerumitan masa. Ia memberitahu kita mengenai prestasi algoritma dalam pelbagai senario. Nilai-nilai ini dapat membantu kita dalam menentukan sama ada kita dapat menggunakan algoritma ini untuk aplikasi kita.

  • Kes terbaik- O (n)
  • Kes purata- (nlogn)
  • Kes terburuk- O (n2)

Dengan ini, kita akan mengakhiri artikel Quicksort dalam C ++ ini. Sekiranya anda ingin mengetahui lebih lanjut, lihat di oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai. Kursus latihan dan pensijilan Java J2EE dan SOA Edureka dirancang untuk melatih anda untuk konsep Java teras dan maju bersama dengan pelbagai kerangka kerja Java seperti Hibernate & Spring.

Ada soalan untuk kami? Sila sebutkan di bahagian komen blog ini dan kami akan menghubungi anda secepat mungkin.