“Ajrat va xukmronlik qil” tilidagi algoritmlar Birlashtirish orqali saralash(Merge Sort) algoritmi. Bu algoritm Jon fon Neyman tamonidan 1946 yilda taklif qilingan. Jon Fon Neyman Vengriyalik olim bo’lib matematika, kvant fizikasi, funksional analiz, to’plamlar nazariyasi, ekonomika, informatika kabi fanlarga munosib hissa qo’shgan. Bo’lib tashla va hukmronlik qil metodi. Algoritmlarni qurishning asosiy metodlaridan biri. Murakkab masalani yechish uchun, uni oddiyroq bo’laklarga ajratish kerak. Massivni ham huddi shunday saralash mumkin: Uni ikkita bo’lakga ajratamiz. Bo’laklarni alohida saralaymiz. Saralangan massivlarni birlashtiramiz. Saralangan massivlarni birlashtirish. Ikkita saralangan massiv berilgan. Ularni birlashtirib shunday massiv hosil qilish qilish kerakki, u yana saralangan bo’lsin. Xar safar hali ikki massivning hali ko’rilmagan qismlaridagi birinchi ikki elementni taqqoslaymiz. Ulardan kichigini olamiz. Bu jarayonni toki bitta massivning chetigacha chiqmagunga qadar davom ettiramiz. Ortib qolgan massiv elementlarini esa to’g’ridan to’g’ri natijaviy massiv iziga berilgan tartibda joylashtirib qo’yamiz. Merge Sort va uning ishlash prinsipi • Merge Sort bu saralanmagan arrayni taqqoslashga asoslangan holda saralovchi algoritm bo'lib, uning ishlash prinsipida to'liq bo'lib tashla va hukmronlik qil g'oyasini uchratish mumkin. Demak, merge sort asosiy ikkita qismdan iborat: • Berilgan arrayni rekursiv holda teng ikkita qismlarga bo'lib chiqish. Bu qadam, qism arraylar uzunligi 1 ga (yoki undan kichik) teng bo'lib qolguncha davom etadi. • Hosil bo'lgan arraylarni qaytib birlashtirib chiqish va bir vaqtni o'zida hosil bo'luvchi array saralangan bo'lishini ta'minlash. Merge sort algoritmi qadamlari • Merge Sort funksiyasiga array va uning boshlang'ich (left) va oxirgi nuqtalari (right) beriladi. • Arraynining o'rtasi hisoblanadi: mid = (left + right)/2. Bu narsa uni teng ikkiga bo'lish uchun kerak bo'ladi. • Merge sortni rekursiv holda birinchi va ikkinchi qismlar uchun chaqiriladi. • 2- va 3-qismlarda hosil bo'lgan arraylar birlashtirib chiqiladi. (Array mavzusidagi ikkita arrayni birlashtirish masalasini ko'rib chiqing) • Algoritm ishlash tezligi O(nlogn) bo'lib tezligi O(n²) bo'lgan oddiy Bubble, Insertion, Selection Sortlardan ancha tez ishlaydi. O'zi umuman olganda, taqqoslash asosida ishlaydigan algortmlarning eng tez ishlash holati O(nlogn) bo'lishi isbotlangan. • Merge sort turg'un saralash hisoblanadi, ya'ni saralamagan arrayda bir nechta bir xil elementlar kelgan bo'lsa, ularning tartibi saralangan massivda ham o'zgarib ketib qolmaydi. • Algoritm ishlashi uchun xotiradan qo'shimcha O(n) joy talab qiladi. • Bu Merge sort haqida bilishingiz kerak bo'lgan narsalar edi. Keyingi darsimizda algoritm implementatiyasiga to'xtalib o'tamiz.