KomputerPengaturcaraan

Isihpantas sebagai kaedah pengaturcaraan

Pada tahun 1960, K. A. Hoar membangunkan kaedah untuk menyusun pesat maklumat, menjadi yang paling terkenal. Hari ini ia digunakan secara meluas dalam komputer, kerana ia mempunyai banyak ciri-ciri positif: ia boleh digunakan untuk kes-kes umum, ia memerlukan peningkatan yang kecil dalam memori tambahan, serasi dengan pelbagai jenis senarai dan mudah untuk dilaksanakan. Tetapi terdapat kelemahan, yang mempunyai isihpantas: menggunakan kerja dibenarkan banyak kesilapan, dan ia adalah agak tidak stabil.

Walau bagaimanapun, ia adalah versi yang paling dikaji. Selepas Hoare pembayaran pertama, banyak melakukan kajian padat. base besar telah ditubuhkan pada soalan teori untuk mencari masa yang digunakan di tempat kerja, yang disokong oleh bukti empirikal. Ada cadangan sebenar untuk memperbaiki algoritma asas dan kelajuan meningkat.

Isihpantas adalah perkara biasa, ia boleh didapati di mana-mana. Pada dasarnya kaedah yang dilaksanakan TList.Sort, hadir dalam semua versi (kecuali 1) Delphi, fungsi perpustakaan masa yang diambil untuk menyelesaikan, qsort dalam C ++.

Prinsip asas operasi boleh dirumuskan sebagai "pecah dan perintah". Ia berlaku pecah senarai ke dalam dua kumpulan dan disusun untuk setiap bahagian dengan sendirinya. Ia mengikuti bahawa perhatian yang lebih harus diberikan kepada proses pemisahan, di mana yang berikut berlaku: ditentukan oleh elemen asas dan telah agak disusun semula keseluruhan senarainya. Dibina di sebelah kiri sekumpulan calon, nilai yang kurang daripada semua peraturan pemindahan lain. Ia ternyata bahawa unsur utama dalam senarai disusun adalah pada tempatnya yang hak. Peringkat seterusnya - satu cabaran fungsi sorting rekursi untuk kedua-dua belah elemen relatif kepada asas. Ia berakhir proses kerja-kerja hanya jika senarai mengandungi hanya satu elemen, iaitu untuk diselesaikan. Oleh itu, untuk menguasai fungsi pengaturcaraan sebagai satu bentuk cepat, ia adalah perlu untuk mengetahui kerja-kerja algoritma peringkat rendah: a) pilihan ahli asas; b) senarai atur yang paling berkesan untuk menghasilkan dua set dengan nilai yang lebih kecil dan lebih besar.

Membiasakan dengan prinsip pertama. Apabila memilih ahli asas, perlu strategik dipilih daripada senarai purata. Kemudian pada rehat dibahagikan kepada dua bahagian yang sama. Hanya mengira nilai purata dalam senarai adalah sangat sukar, jadi walaupun sorting yang paling cepat memintas sebelah kira. Tetapi pilihan unsur asas dengan nilai maksimum atau minimum - juga bukan pilihan yang terbaik. Sekiranya penentuan itu satu mencipta senarai kosong akan dijamin, dan yang kedua penuh. Oleh itu kesimpulan bahawa sebagai ahli asas perlu satu yang lebih dekat dengan penggunanya.Rata-rata yang dipilih, tetapi di pihak yang maksimum dan minimum.

Setelah pilihan yang ditentukan, anda boleh meneruskan untuk algoritma penguraian. Ini yang dipanggil gelung dalaman jenis cepat. Semuanya dibina di atas dua indeks Akses Rapid: pertama pergi ke atas unsur-unsur dari kiri ke kanan, yang kedua, sebaliknya, dari kanan ke kiri. Bermula pelaksanaan operasi kanan: indeks dalam senarai dan bandingkan semua nilai kepada utama. kitaran selesai apabila unsur adalah kurang daripada atau sama dengan garisan belakang. Iaitu, terdapat perbandingan dan mengurangkan nilai indeks. Yang di sebelah kiri apabila kerja-kerja selesai lebih besar daripada atau sama nilainya. Di sini, nilai perbandingan bertambah.

Pada peringkat ini algoritma pembahagian yang terdiri quicksort, dua keadaan mungkin timbul. Yang pertama adalah bahawa indeks di sebelah kiri adalah kurang daripada betul. Ini menunjukkan kesilapan, maka ada unsur-unsur di mana ia telah dinyatakan dalam senarai adalah dalam susunan yang salah. Output - menukar tempat mereka. Keadaan kedua ialah apabila kedua-dua tiang adalah sama dengan atau melintasi. Ini menunjukkan pemisahan yang berjaya dalam senarai itu, iaitu, kerja kini lengkap.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ms.atomiyme.com. Theme powered by WordPress.