Video: Quick Sort dalam Java 2024
Di sini, anda mengetahui bagaimana salah satu teknik penyortiran yang paling biasa digunakan di Java sebenarnya berfungsi. Teknik ini dipanggil Quicksort, dan penggunaan rekursion sangat bijak.
Bagi kebanyakan kita, memikirkan bagaimana algoritma pengurutan seperti kerja Quicksort hanyalah latihan intelektual. Java API telah menyusun telah dibina.
Teknik Quicksort menyusun pelbagai nilai dengan menggunakan rekursi. Langkah-langkah asasnya ialah:
-
Pilih nilai sewenang-wenang yang terletak dalam julat nilai dalam array.
Nilai ini ialah titik pangsi . Cara yang paling biasa untuk memilih titik pivot ialah memilih nilai pertama dalam array. Orang ramai telah menulis ijazah kedoktoran dengan cara yang lebih canggih untuk memilih titik pivot yang menyebabkan penyisihan lebih cepat. Stick dengan menggunakan elemen pertama dalam array.
-
Susun semula nilai-nilai dalam array supaya semua nilai yang kurang daripada titik pangsi berada di sebelah kiri array dan semua nilai yang lebih besar atau sama dengan titik pangsi berada di sebelah kanan pelbagai.
Nilai pangsi menandakan sempadan antara sebelah kiri dan sisi kanan array. Ia mungkin tidak akan mati, tetapi itu tidak penting. Langkah ini dipanggil partitioning, dan sisi kiri dan kanan array itu partition.
-
Sekarang rawat setiap dua bahagian array sebagai array berasingan, dan mulakan dengan Langkah 1 untuk bahagian itu.
Itulah sebahagian rekursif algoritma.
Bahagian paling sukar dari algoritma Quicksort adalah langkah pembahagian, yang mesti menyusun semula partition supaya semua nilai yang lebih kecil daripada titik pivot berada di sebelah kiri dan semua elemen yang lebih besar daripada pivot titik di sebelah kanan. Katakan bahawa array mempunyai sepuluh nilai ini:
38 17 58 22 69 31 88 28 86 12
Di sini titik pangsi ialah 38, dan tugas langkah partitioning adalah untuk menyusun semula array kepada sesuatu seperti ini: < 17 12 22 28 31 38 88 69 86 58
Perhatikan bahawa nilai-nilai masih tidak teratur. Arahan itu, bagaimanapun, telah dibahagi di sekitar nilai 38: Semua nilai yang kurang daripada 38 adalah di sebelah kiri 38, dan semua nilai yang lebih besar daripada 38 adalah di sebelah kanan 38.
Sekarang anda boleh membahagikan array menjadi dua partition pada nilai 38 dan ulangi proses untuk setiap sisi. Nilai pivot itu sendiri pergi dengan partition kiri, jadi partition kiri adalah ini:
17 12 22 28 31 38
Kali ini, langkah partitioning memilih 17 sebagai titik pivot dan menyusun semula unsur-unsur seperti berikut: > 12 17 22 28 31 38
Seperti yang anda dapat lihat, bahagian array ini disusun sekarang.Malangnya, Quicksort tidak menyedari bahawa pada masa ini, ia memerlukan lebih banyak rekursi untuk memastikan. Tetapi itulah proses asas.