KompyuterlarDasturlash

Bir dasturlash usuli sifatida Quicksort

1960 yilda K. A. Hoar, axborot tez saralash uchun, bir usuli ishlab chiqilgan eng mashhur bo'ldi. Bu ijobiy xususiyatlari bir poda bor, deb Bugungi kunda keng, dasturlash ishlatiladi: bu umumiy holatlar uchun foydalanish mumkin, u ro'yxatlar turli turdagi bilan mos va amalga oshirish oson qo'shimcha xotirada bir kichik ortishi, talab qiladi. foydalanib ish xatolar ko'p ruxsat, va u bir oz beqaror bo'ladi: Lekin Quicksort ega bo'lgan, kamchiliklar bor.

Biroq, eng o'rganib versiyasi. birinchi to'lov Hoare so'ng, ko'p o'z zich o'rganishga qaror qilishadi. katta tayanch empirik dalillar homiylik ish, sarflangan vaqt topish nazariy masalalar bo'yicha tashkil etilgan. asosiy algoritm va ortib borayotgan tezligini oshirish uchun real takliflar bor edi.

Quicksort u hamma joyda topish mumkin, juda keng tarqalgan. uning asosida usuli Delphi, u ++ C, qsort bajarish uchun olib vaqt kutubxona funktsiyasi (1 tashqari) barcha versiyalarida mavjud TList.Sort, amalga oshirilmoqda.

ishga asosiy printsipi bir "bo'l va" sifatida shakllantirish mumkin. Bu ikki guruhga ro'yxatini sindirib tashkil etadi va o'z tomonidan har bir qismi uchun tartiblanadi. tayanch elementi tomonidan belgilanadi va nisbatan uning butun ro'yxat qayta qildi: u ko'proq e'tibor quyidagi sodir bo'lgan paytida ajratish jarayonida, qaratish lozim, deb keladi. nomzodlar bir guruh chap qurilgan, qiymati bo'lgan boshqa barcha transfer qoidalarga nisbatan kamroq bo'ladi. Bu tartiblashtiriladi ro'yxatda asosiy element o'zining munosib o'rniga ekan. Keyingi bosqich - bazasi nisbatan elementlarning har ikki tomon uchun qiyin recursive tartibida vazifalari. Bu tartiblashtiriladi qilinadi, jarayon ro'yxati faqat bir elementi o'z ichiga olgan bo'lsa, ishlari tugaydi. Shunday qilib, tez turdagi kabi dasturlash vazifasini egallash uchun, u quyi darajadagi algoritmlarini ishini bilish zarur: a) tayanch a'zosi tanlash; b) eng samarali permütasyonda ro'yxati kichik va katta qadriyatlar bilan ikki jamoa ishlab chiqarish.

birinchi tamoyillari bilan tanishish. baza a'zosi tanlashda, ideal o'rtacha ro'yxatidan tanlangan bo'lishi kerak. So'ngra tanaffus ikki teng qismga bo'linadi. Faqat hisoblash o'rtacha qiymati ro'yxatda juda qiyin, shuning uchun ham eng tez ajratish, bu hisob-yon chetlab o'tdi. Lekin maksimal yoki minimal qiymati bilan asosiy element tanlash - ham emas, eng yaxshi variant. holda birining bunday aniqlash bo'sh ro'yxati kafolatlangan va ikkinchi to'liq bo'ladi yaratadi. Shuning uchun baza a'zosi sifatida o'rtacha yaqinroq bo'lganga tanlagan, lekin maksimal va minimal bo'lishi kerak tuzish.

Agar tanlov belgilanadi so'ng, ajratish algoritm uchun davom mumkin. Bu tez Saralash ichki doira deb atalmish. Hamma narsa ikki Tez Kirish ko'rsatkichlar asosida qurilgan: birinchi o'ngdan chapga, aksincha, o'ng, sekundiga chapdan elementlar orqali o'ting. operatsiya ijro huquqiga boshlanadi: indeks ro'yxatiga kiritilgan bo'lib, asosiy barcha qiymatlarni solishtirish. element boshlang'ich teng yoki undan kam bo'lsa, davr yakunlandi. Bu erda bir taqqoslash va indeks qiymatini pasaytiradi, deb. chap tomondan ish ortiq yoki teng qiymat katta tugagach. Bu yerda, taqqoslash qiymati ortadi.

Quicksort o'z ichiga oladi bölümlendirme algoritm bu bosqichda, ikki vaziyatlar vujudga kelishi mumkin. birinchi, chap ko'rsatkich o'ng kamroq bo'ladi. Bu xato bildiradi, u ro'yxatda qayd etilgan qaysi elementlar noto'g'ri tartibda bo'lgan mavjud. Chiqish - ularning o'rinlarini o'zgartirish. ustun ham teng yoki kesib bo'lsa, ikkinchi vaziyat emas. Bu ya'ni, ish endi tugatilsa, ro'yxatning muvaffaqiyatli ajratish ko'rsatadi.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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