Massivlarni pufaksimon usulda saralash
Chapdan o'ngga massiv bo'ylab yuramiz. Agar joriy element keyingisidan kattaroq bo'lsa, ularni almashtiramiz. Biz buni massiv saralanmaguncha qilamiz. E'tibor bering, birinchi takrorlashdan so'ng, eng katta element massivning oxirida, to'g'ri joyda bo'ladi. Ikki takrorlashdan so'ng, ikkita eng katta element to'g'ri joyda bo'ladi va hokazo. Shubhasiz, ko'pi bilan n takrorlashdan so'ng, massiv saralanadi. Shunday qilib, eng yomon va o'rtacha holatlarda asimptotiklar O ( ), eng yaxshi holatda O (n).
Algoritm tartiblash uchun massiv orqali takroriy o'tishdan iborat. Har bir o'tish uchun elementlar ketma-ket juftlikda taqqoslanadi va agar juftlikdagi tartib noto'g'ri bo'lsa, elementlar almashtiriladi. Massiv orqali o'tishlar N-1 marta takrorlanadi yoki keyingi o'tish tugaguniga qadar almashinuvlar kerak bo'lmaydi, demak massiv saralangan. Algoritm har safar ichki sikldan o'tganida, massivning keyingi eng katta elementi avvalgi "eng katta element" yonidagi qatorga qo'yiladi va eng kichik element bitta pozitsiyani massiv boshiga ko'chiradi ( suvdagi ko'pik kabi kerakli holatga "suzadi" - shuning uchun algoritm nomi „pufaksimon“ saralash deb nomlangan).
Massivlarni Shell usulida saralash
1959-yilda amerikalik olim Donald Shell saralash algoritmini nashr etdi va keyinchalik uning nomi bilan ushbu ataldi. Ushbu algoritmni pufakchali saralash va joylashtirish orqali saralash usullarini birlashmasi sifatida qarash mumkin.
Usulning g'oyasi guruhlarga bo'lingan ketma-ketlik elementlarini taqqoslash bo'lib, ular bir-biridan biroz masofada joylashgan. Dastlab, bu masofa d yoki N/2 ga teng, bu yerda N - elementlarning umumiy soni. Birinchi bosqichda har bir guruh N / 2 masofada bir-biridan masofada joylashgan ikkita elementni o'z ichiga oladi; ular bir-biri bilan taqqoslanadi va kerak bo'lsa teskari yo'naltiriladi. Keyingi bosqichlarda tekshirish va almashinish ham sodir bo'ladi, ammo d masofa d / 2 ga kamayadi va guruhlar soni mos ravishda kamayadi. Asta-sekin elementlar orasidagi masofa kamayadi va d = 1 da massiv oxirgi marta uzatiladi.
Butun sonlar ketma-ketligi misolida Shell usuli yordamida massivni saralash jarayonini ko‘rib chiqamiz. Qulaylik va ravshanlik uchun bitta guruh elementlari bir xil rangda ko‘rsatilgan.
Berilgan massiv
d masofaga mos keladigan birinchi qiymat 10/2 = 5 ga teng. Har bir qadamda u ikki baravar kamayadi. Bir guruhdagi elementlar taqqoslanadi va agar u taqqoslanadigan elementning chap tomonidagi biron bir elementning qiymati katta bo'lsa (o'sish tartibida tartiblash), ular almashtiriladi. Shunday qilib, guruh ichidagi almashtirishlar yordamida elementlar asta-sekin o'z pozitsiyalariga tushadi va oxirgi bosqichda (d = 1) tartiblash massivning barcha N elementlarini o'z ichiga olgan bir guruh orqali o'tishga kamayadi. Bunday holda, kerakli almashinuvlar soni juda oz bo'lib chiqadi.
Do'stlaringiz bilan baham: |