SARALASH ALGORITMLARI VA UNING TURLARI.
C# tilida maxsus saralash usullari ko'plab turli ma'lumotlar tuzilmasi uchun mavjud. Ma'lumotlar tuzilmasini saralash odatiy tartibda qilishning o'zi mumkin, lekin ba'zi holatlarda maxsus saralash qo'llanma o'zgaruvchilarini yaratish va ularni taqdim etish uchun qo'shimcha tushunchalar va usullar ishlatilishi mumkin.
Saralash, ma'lumotlar to'plamini belgilangan tartibda joylash uchun amalga oshiriladigan algoritm turi. Saralash algoritmlari, ma'lumotlar to'plamini kichikdan katta yoki kattadan kichikgacha tartiblashda qo'llaniladi. Asosiy maqsad, ma'lumotlarni qidiruv, izlash, kiritish, olish va boshqa amallar uchun oson qilishdir.
Saralash algoritmlari dasturlashda ma'lumotlarni tartiblashda va qidiruvda juda muhim bo'lgan elementlar. Saralash algoritmlari uchun turli turdagi usullar mavjud. Quyidagi, saralash algoritmlari turlarini va ba'zi muhim algoritmlarni ko'rib chiqamiz:
1. Qisqa Tartiblash (Bubble Sort):
Bu algoritm o'nlab o'qdan iborat ro'yhatdagi har bir elementni o'zidan keyingi element bilan solishtirib, agar o'rtadagi element katta bo'lsa, ularni o'rinlarni almashtiradi. Bu jarayonni barcha elementlar to'g'ri tartibga kelgunga qadar davom ettiradi.
2. Chap Qarshilik Tartiblash (Selection Sort):
Bu algoritm ro'yhatni chapdan boshlab biror elementni tanlash va uning o'rnini boshida bo'lgan element bilan almashtirishdan iborat.
3. Chap Qarshilik Tartiblash (Insertion Sort):
Bu algoritm o'nlab o'qdan iborat ro'yhatni ixtiyoriy bir elementni tanlash va uni o'zini o'rniga joylashdan iborat.
4. Biror Saqlash (Merge Sort):
Bu algoritm ro'yhatni ikkiga bo'lib bo'sh vaqtincha saralashdan iborat. So'ngra ikkita saralgan ro'yhatni birlashtirishdan iborat.
static void BirorSaqlash(int[] royxat, int bosh, int o'rtacha, int oxir)
{
int n1 = o'rtacha - bosh + 1;
int n2 = oxir - o'rtacha;
int[] chap = new int[n1];
int[] o'ng = new int[n2];
Array.Copy(royxat, bosh, chap, 0, n1);
Array.Copy(royxat, o'rtacha + 1, o'ng, 0, n2);
int i = 0, j = 0;
int k = bosh;
while (i < n1 && j < n2)
{
if (chap[i] <= o'ng[j])
{
royxat[k] = chap[i];
i++;
}
else
{
royxat[k] = o'ng[j];
j++;
}
k++;
}
while (i < n1)
{
royxat[k] = chap[i];
i++;
k++;
}
while (j < n2)
{
royxat[k] = o'ng[j];
j++;
k++;
}
}
static void BirorSaqlashTartiblash(int[] royxat, int bosh, int oxir)
{
if (bosh < oxir)
{
int o'rtacha = (bosh + oxir) / 2;
BirorSaqlashTartiblash(royxat, bosh, o'rtacha);
BirorSaqlashTartiblash(royxat, o'rtacha + 1, oxir);
BirorSaqlash(royxat, bosh, o'rtacha, oxir); } }
5. Tezroq Saqlash (Quick Sort):
Bu algoritm avval biror elementni tanlash, keyin tanlangan elementni o'rtasida joylashtirish va ikkiga bo'lib saralashdan iborat. So'ngra bu jarayonni takrorlash.
static int TanlanganElementniJoylashtirish(int[] royxat, int bosh, int oxir)
{
int tanlangan = royxat[oxir];
int i = (bosh - 1);
for (int j = bosh; j < oxir; j++)
{
if (royxat[j] <= tanlangan)
{
i++;
// Al
6. Bog'lovchi Saqlash (Bucket Sort):
Ma'lum bir to'plamni boshqa to'plamlarga bo'lib yuborish va har bir to'plamni alohida saralash.
7. Radix Sort:
Har bir sonni uning raqamlariga ko'ra saralash. Ba'zi harflarni, sonlarni yoki boshqa ma'lumot turlarini saralash uchun foydalaniladi.
Saralash algoritmlari foydalanilayotgan ma'lumotlar turi va dastur mavjud bo'lgan shartlar asosida tanlanadi. Har bir algoritmning o'ziga xos xususiyatlari, saralash uchun qancha vaqt va resurslarni talab etishi, uchta maxsus xususiyatni (o'nlab o'qdan oshqazib bitta qo'shish, barcha elementlarni tekshirish) olib boradi.
Bu saralash algoritmlari dasturlashda ko'p qo'llaniladi va dasturchilar uchun muhimdir, chunki ma'lumotlarni samarali, tezkor va to'g'ri tartibda joylash uchun ishlatiladi.
O'nlab O'q:
O'nlab o'q saralash algoritmi, ma'lumotlar to'plamini solishtirib, ularni o'rtadan boshlab joylashtirib ketadigan tartibda saralaydi. Bu algoritmda o'rtadagi bitta elementni to'g'ri joyiga joylashtirish uchun biror o'q tuziladi. Agar keyingi o'q o'tmagan bo'lsa, algoritma tugaydi. Bu jarayonni har bir elementga qo'l uzatish uchun yangi o'q ochiladi.
Shell Sort:
Shell saralash algoritmi, ma'lumotlarni qadam qadam, orqaga solishtirib, keyin bir nechta elementlarni bir-biri bilan almashtirish orqali saralaydi. Bu algoritmning maqsadi, o'rtadagi elementlarni to'g'ri joylashtirib, tuzilma qismini o'nlab o'qdan oshirish va boshqa elementlar bilan takrorlashdir.
Tim Sort:
Tim saralash algoritmi o'nlab o'q va chap qarshilik tartiblash algoritmlarini birlashtirgan bir hibrid algoritm hisoblanadi. Bu algoritm, o'nlab o'qda har bir qismini saralashdan iborat bo'lib, keyin birlashtirib, chap qarshilik tartiblashni amalga oshiradi.
Heap Sort:
Biror saqlash saralash algoritmi, so'z mavjud to'plamni (bu saqlash deb ataladi) ishlatadi. Bu algoritm o'nlab o'q saralash algoritmiga kiradi va har bir elementni bitta saqlash elementiga almashtirib, bosh saqlashni tiklash orqali saralashni bajaradi.
Counting Sort:
Bu algoritm massivda nechta marta qatnashgan ma'lumotlarni sanab, natijalarni saqlash uchun ishlatiladi. Shunday qilib, har bir ma'lumotni uning qiymati bilan birga sanash orqali saralash amalga oshiriladi.
Birlikdagi Saqlash (Radix Sort):
Birlikdagi saqlash, har bir raqamga qarab tartiblab chiqish amalga oshiradi. Misol uchun, agar sonlar ikki xonali bo'lsa, u birinchi xonalar bo'yicha tartiblab chiqiladi, keyin ikkinchi xonalar bo'yicha.
Har birining xususiyatlari, foydalanish shartlari va muhimiyatiga e'tibor bering. Saralash algoritm tanlovida, ma'lumotlar to'plamining turi (raqamlar, matnlar, obyektlar), to'plam hajmi, tartiblash vaqti, xotira sarf etilayotgan joylar (in-place saralash) kabi ko'rsatkichlar foydalanishda katta roli bo'ladi.
|