Ma’lumotlarni saralash. Saralashning birlashtirish (sliyanie) usuli
MAVZU: Ma’lumotlarni saralash. Saralashning birlashtirish (sliyanie) usuli Mundarija 1-bob 1 Tarix 2 Tasnifi 2.1 Barqarorlik 3 Algoritmlarni taqqoslash 3.1 Taqqoslash turlari 3.2 Taqqoslanmaydigan turlar 3.3 Boshqalar 2-bob 4 Mashhur saralash algoritmlari 4.1 Oddiy navlar 4.1.1 Kiritish tartibi 4.1.2 Tanlov tartibida 4.2 Samarali navlar 4.2.1 Saralashni birlashtirish 4.2.2 Heapsort 4.2.3 Quicksort PAGE \* MERGEFORMAT 22
4.2.4 Shellsort 4.3 Bubble sort va variantlari 4.3.1 Bubble sort 4.3.2 Taroq saralash 4.4 Tarqatish tartibi 4.4.1 Sanoq turi 4.4.2 Paqir navi 4.4.3 Radix sort 5 Xotiradan foydalanish tartibi va indekslarni saralash 6 Tegishli algoritmlar 3-bob 7 Xulosa 8 Adabiyotlar KIRISH “Dasturlash asoslari” fanining bosh maqsadi talabalarga qo‘yilgan tatbiqiy masalani anglash, yechish algoritmini ishlab chiqish va dasturiy ta’minotini yaratish asoslarini o‘rgatishdir. Shu maqsadda mazkur o‘quv qo‘llanmada masala echish matematik modellari, usullari va algoritmlar yaratish asoslari hamda kompyuterda masalalarni yechish uchun C++ dasturlash tilining tayanch tushunchalari keltirilgan. O‘quv qo‘llanmada kompyuter vositasida dasturlashga kirishning nazariy asosi bo‘lgan “algoritm” tushunchasiga alohida e’tibor qaratilgan. Mazkur qo’llfnmada algoritmlarni tavsiflash va keyinchalik kompyuter vositasida bajarish uchun zarur bo‘lgan bir qator matematik tushunchalar – chiziqli, tarmoqlanuvchi va takrorlanuvchi jarayonlar, yordamchi algoritm, massiv, PAGE \* MERGEFORMAT 22
indeks, rekursiya, funksiya va parametr kiritilgan bo‘lib, turli sohalarga oid masalalarni echish algoritmlari va dasturlariga oid mavzular yoritilgan. Dasturlash tili – tadqiq qilinadigan jarayonga mos keladigan matematik modeldagi munosabatni yechish usuli uchun tuzilgan algoritmni kompyuterda amalga oshirish vositasidir. Shu sababli o‘quv qo‘llanmada tatbiqiy masalalar yyechishning algoritmik asoslarini o‘rganish, kompyuterda berilganlar va buyruqlarni tasvirlash, shuningdek C++ tilida dasturlash asoslariga alohida e’tibor berilgan. Shu bilimlarga tayangan holda talaba kompyuter vositasida 1.Tarix Hisoblashning boshidan boshlab, saralash muammosi juda ko'p tadqiqotlarni jalb qildi, ehtimol bu oddiy, tanish bayonotga qaramay, uni samarali hal qilishning murakkabligi tufayli. Dastlabki saralash algoritmlari mualliflari orasida 1951 yil ham bo'lgan Betti Xolberton (tug'ilgan Snayder), kim ishlagan ENIAC va UNIVAC . Bubble sort 1956 yilidayoq tahlil qilingan. Taqqoslash tartiblash algoritmlari asosiy talabga ega Ω ( n jurnal n ) taqqoslashlar (ba'zi kirish ketma-ketliklari ko'paytmani talab qiladi n jurnal n taqqoslashlar, bu erda n - qatorga ajratiladigan elementlar soni). Kabi taqqoslashga asoslanmagan algoritmlar hisoblash turi , yaxshi ishlashga ega bo'lishi mumkin. Asimptotik optimal algoritmlar 20-asr o'rtalaridan beri ma'lum bo'lgan - foydali yangi algoritmlar hali ham ixtiro qilinmoqda, hozirda keng qo'llanilmoqda Timsort 2002 yilga tegishli va kutubxona birinchi marta 2006 yilda nashr etilgan. tanishishni ta'minlaydigan sinflar. katta O yozuvlari , algoritmlarni ajratish va yutish , ma'lumotlar tuzilmalari kabKirish qismida saralash algoritmlari keng tarqalgan Kompyuter fanlari masalan, algoritmlarning ko'pligi turli xil asosiy algoritm tushunchalari bilan yumshoq i uyumlar va ikkilik daraxtlar , tasodifiy algoritmlar , eng yaxshi, eng yomon va o'rtacha ish tahlil, vaqt-makon savdo- sotiqlari va yuqori va pastki chegaralar . Kichik massivlarni maqbul (hech bo'lmaganda taqqoslash va almashtirish) yoki tez (masalan, mashinaning o'ziga xos tafsilotlarini hisobga olgan holda) saralash hali ham juda kichik massivlar uchun ma'lum bo'lgan echimlarga ega bo'lgan ochiq tadqiqot muammosi (<20 element). Xuddi shunday maqbul (har xil ta'rifga ko'ra) parallel mashinada saralash ham ochiq tadqiqot mavzusi. 2. Tasnifi PAGE \* MERGEFORMAT 22
Saralash algoritmlari ko'pincha quyidagicha tasniflanadi: Hisoblashning murakkabligi ( eng yomon, o'rtacha va eng yaxshi xatti- harakatlar) ro'yxat kattaligi bo'yicha ( n ). Odatda ketma-ket tartiblash algoritmlari uchun yaxshi xatti-harakatlar O ( n jurnal n ), parallel saralash bilan O (log 2 n ) va yomon xulq O ( n 2 ). (Qarang Big O notation .) Ketma-ket tartiblash uchun ideal xatti-harakatlar O ( n ), ammo bu o'rtacha holatda bu mumkin emas. Optimal parallel saralash O (log) n ). Taqqoslashga asoslangan saralash algoritmlari kamida need (kerak n jurnal n ) ko'pgina kirishlar uchun taqqoslashlar. Hisoblashning murakkabligi svoplar ("joyida" algoritmlari uchun). Xotira foydalanish (va boshqa kompyuter resurslaridan foydalanish). Xususan, ba'zi bir saralash algoritmlari " joyida ". To'liq aytganda, joyida tartiblash tartiblangan narsalardan tashqari faqat O (1) xotiraga muhtoj; ba'zan O (log ( n )) qo'shimcha xotira "joyida" deb hisoblanadi. Rekursiya. Ba'zi algoritmlar rekursiv yoki rekursiv bo'lmagan, boshqalari esa ikkalasi ham bo'lishi mumkin (masalan, birlashtirish navi). Barqarorlik: barqaror saralash algoritmlari yozuvlarning nisbiy tartibini teng tugmachalar (ya'ni, qiymatlar) bilan saqlash. Ular yo'qmi yoki yo'qmi a taqqoslash . Taqqoslash saralashi ma'lumotlarni faqat taqqoslash operatori bilan taqqoslash orqali tekshiradi. Umumiy usul: qo'shish, almashtirish, tanlash, birlashtirish, va boshqalar. Birja turlariga pufakchali saralash va tezkor kort kiradi. Tanlash turlariga shaker sort va hepsort kiradi. Algoritm ketma-ket yoki parallel bo'ladimi. Ushbu munozaraning qolgan qismi deyarli faqat ketma-ket algoritmlarga asoslangan va ketma-ket ishlashni nazarda tutadi. Moslashuvchanlik: Kirishning oldindan belgilanishi ish vaqtiga ta'sir qiladimi yoki yo'qmi. Buni hisobga oladigan algoritmlar ma'lum moslashuvchan . . Barqarorlik PAGE \* MERGEFORMAT 22
O'yin kartalarida barqaror turga misol. Kartalar barqaror navbati bilan saralash bo'yicha tartiblanganida, har ikkala 5-lar avval chiqarilgan tartibda bir xil tartibda qolishi kerak. Agar ular barqaror bo'lmagan tartib bilan saralansa, 5-lar qarama- qarshi tomonga o'tishi mumkin tartiblangan chiqishda tartib. Barqaror saralash algoritmlari takrorlangan elementlarni kiritishda paydo bo'ladigan tartibda tartiblaydi. Ma'lumotlarning ayrim turlarini saralashda saralash tartibini aniqlashda ma'lumotlarning faqat bir qismi tekshiriladi. Masalan, o'ng tomonda kartalarni saralash misolida kartalar ularning darajalariga qarab saralanmoqda va ularning kostyumiga e'tibor berilmaydi. Bu asl ro'yxatning turli xil to'g'ri tartiblangan versiyalarini olish imkoniyatini beradi. Barqaror saralash algoritmlari, ulardan birini quyidagi qoidaga binoan tanlaydi: agar ikkita 5 ta karta singari ikkita narsa teng taqqoslansa, unda ularning nisbiy tartibi saqlanib qoladi, shuning uchun agar kiritishda biri ikkinchisidan oldin kelsa, u ham bo'ladi chiqishda bir-biridan oldin keling. Barqarorlik quyidagi sabablarga ko'ra muhimdir: ism va sinf qismidan iborat bo'lgan talabalar yozuvlari veb-sahifada dinamik ravishda, avval nomi bilan, so'ngra ikkinchi bo'limda sinf bo'limi bo'yicha tartiblanganligini ayting. Agar har ikkala holatda ham tartiblashning barqaror algoritmi ishlatilsa, "sinflar bo'yicha bo'lim" operatsiyasi nom tartibini o'zgartirmaydi; beqaror tartib bilan, bo'lim bo'yicha saralash nom tartibini aralashtirib yuborishi mumkin. Barqaror saralashdan foydalanib, foydalanuvchilar birinchi navbatda ism yordamida saralash orqali, so'ngra bo'lim yordamida yana saralash orqali bo'limlar bo'yicha, so'ngra ismlar bo'yicha saralashni tanlashi mumkin, natijada ismlar tartibi saqlanib qoladi. (Ba'zi bir elektron jadval dasturlari ushbu xatti-harakatga bo'ysunadi: ismlar bo'yicha saralash, keyin bo'lim bo'yicha talabalarning alifbo ro'yxati bo'limlar bo'yicha berilgan.) PAGE \* MERGEFORMAT 22