2.2 2-rasm. Bog‘langan ro‘yxatlar konkatenatsiyasi
Taqqoslanma saralashlarning bajarilish vaqtlari. Qo‘yish usuli. Agar ichki siklga qarasak yozuvlarning tartiblangan qismiga qo‘shilgan element qolgan elementlardan kichik bo‘lsa operasiyalar eng ko‘p bajariladi. Bu holda location o‘zgaruvchisi 0 ga teng bo‘lganda sikl o‘z ishini tugatadi. SHuning uchun yangi element massiv boshiga qo‘shilganda algoritm eng ko‘p bajariladi. Bunday holat joriy massivning elementlari kamayish tartibida joylashgan bo‘lsa bo‘lishi mumkin. Bu yomon holatlardan biridir.
Bunday massivni qayta ishlash jarayoni qanday bo‘lishini ko‘rib chiqamiz. Birinchi massivning ikkinchi elementi qo‘yiladi. U faqat bitta element bilan solishtiriladi. Ikkinchi qo‘yiladigan element (tartib buyicha uchinchi) oldingi ikkita element bilan, uchinchi qo‘yilgan element oldingi uchta element bilan solishtiriladi. Umuman olganda i - qo‘yiladigan element oldingi i ta element bilan solishtiriladi va bu jarayon N-1 marta takrorlanadi.
2.3 Massivlarni birlashtirib saralash algoritmi
Birlashmali saralash (Merge Sort) algoritmi asosiy beshta saralash algoritmlari (pufakchali saralash, tezkor saralash va boshqalar) dan biri bo`lib, chiziqli saralash algoritmlaridan farqli ravishda "bo`lib tashla va hukmronlik qil" tipidagi algoritm hisoblanadi.
Bu tipdagi algoritmlar katta hajmdagi masalalarni nisbatan kichik bo`lgan va oson yechiladigan qismlarga ajratgan holda bajaradi. Bunday algoritmlar masalalarni hal qilishda vaqtdan katta yutuq qilish imkonini beradi.
Birlashmali saralashda biz berilgan massivni uzunligi faqat 1 elementga teng bo`lgan qismlar qolmaguncha o`rtasidan ajratamiz. Keyin bu qismlar to`g`ri tartibda birlashtiriladi.
using System; namespace Asosiy
{ class Program
{ static void Main(string[] args)
{
Console.WriteLine("Nechta harflarni saralaymiz?"); int N = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Saralanishi kerak bo'lgan harflarni kiriting:"); char[] mas=new char[N]; for (int i = 0; i < mas.Length; i++)
{ mas[i] = Convert.ToChar(Console.ReadLine());
} char temp; for
(int i = 0; i < mas.Length;
i++)
{ for (int j = i + 1; j < mas.Length; j++) { if (mas[i] > mas[j])
{ temp = mas[i]; mas[i] = mas[j]; mas[j] = temp;
}
}
}
Console.WriteLine("Saralashdan keyin:"); for (int i =
0; i < mas.Length; i++)
{
Console.WriteLine (mas[i].ToString());
}
Console.ReadKey();
}
}
}
Dastur algoritmini ko’rib chiqamiz:
BOSHLASH
Nechta
raqamlarni
TAMOM
|