|
MASSIVLARNI TEZKOR SARALASH
|
bet | 3/7 | Sana | 17.12.2023 | Hajmi | 0,59 Mb. | | #121887 |
Bog'liq Abdullayeva Shahrizoda. Saralash va izlashMASSIVLARNI TEZKOR SARALASH
Massiv, biror turdagi ma'lumotlar to'plamidir. C# dasturlash tilida massivlar odatda kerak bo'lgan ma'lumotlar turlarini, masalan, sonlar, matnlar, obyektlar va h.k. saqlash uchun ishlatiladi. Massivda har bir element indeks orqali aniqlanadi.
C# tilida massivni yaratish va undan foydalanish quyidagi ko'rinishda bo'ladi:
Tezkor saralash algoritmlari massivlarni samarali, yuqori tezlikda saralash uchun ishlatiladi. Bu algoritmlar ma'lumotlar tuzilmasini n-o'rtadan boshlab vaqtincha ortish bo'yicha tanlaydi. Quyidagi bir nechta tezkor saralash algoritmlarini keltirib o'tamiz:
1. Tezkor Qisqa Tartiblash (Quick Sort):
Bu algoritm o'nlab o'qni ajratib oladi. Har bir qismni ajratib, o'rtadagi elementni tanlaydi va o'zini o'rtaga o'rnatadi. So'ngra chap va o'ng qismlar uchun takrorlanadi.
2. Tezkor Tuzilgan Saqlash (Heap Sort):
Bu algoritm bitta ma'lumotlar saqlash elementini ishlatadi va har bir qismini saralaydi. U yuqori tezlikda ishlaydi va bo'sh saqlashni ishlatmasdan saralashni bajaradi.
Bu algoritmlar massivni yuqori tezlikda saralash uchun foydalaniladi. Tanlangan algoritmni ma'lumotlaringizning xususiyatlariga va hajmini ko'rsating, chunki har bir algoritmning xususiyatlari mavjud va ular bir-biridan farq qila olishadi.
3. Tezkor Tartiblash (Shell Sort):
Bu algoritm, saralashda tezkorlik va muhimiyatni jamlab chiqarish uchun tuzilgan. O'nlab o'q va chap qarshilik tartiblash algoritmlarining bir qismini o'z ichiga oladi. Shell Sort, bir nechta keyingi o'q qadamidan iborat. Har bir keyingi o'q qadamida massivni solishtirib olish uchun intervalidarni chiqaradi.
static void TezkorTartiblash(int[] royxat)
{
int n = royxat.Length;
for (int interval = n / 2; interval > 0; interval /= 2)
{
for (int i = interval; i < n; i++)
{
int j;
int temp = royxat[i];
for (j = i; j >= interval && royxat[j - interval] > temp; j -= interval)
royxat[j] = royxat[j - interval];
royxat[j] = temp;
}
}
}
4. Tezkor Radix Sort:
Bu algoritm, ma'lumotlar to'plamini bir nechta qiymatga ega bo'lgan raqamlar bo'yicha saralash uchun ishlatiladi. Boshqa algoritmlarga nisbatan xotira sarflarini qisqartiradi.
static void TezkorRadixSort(int[] royxat)
{
int max = MaxQiymat(royxat);
for (int exp = 1; max / exp > 0; exp *= 10)
CountingSort(royxat, exp);
}
static int MaxQiymat(int[] royxat)
{
int max = royxat[0];
for (int i = 1; i < royxat.Length; i++)
if (royxat[i] > max)
max = royxat[i];
return max;
}
static void CountingSort(int[] royxat, int exp)
{
int n = royxat.Length;
int[] output = new int[n];
int[] count = new int[10];
Array.Fill(count, 0);
// Har bir raqamni hisoblash
for (int i = 0; i < n; i++)
count[(royxat[i] / exp) % 10]++;
// Tartiblash uchun indekslar qo'shish
for (int i = 1; i < 10; i++)
count[i] += count[i - 1];
// output massivini yaratish va to'g'rilash
for (int i = n - 1; i >= 0; i--)
{
output[count[(royxat[i] / exp) % 10] - 1] = royxat[i];
count[(royxat[i] / exp) % 10]--;
}
// Asl massivni yangilash
for (int i = 0; i < n; i++)
royxat[i] = output[i];
}
Bu tezkor saralash algoritmlari dasturlashda muhim rol o'ynaydi. O'ziga xos shartlarda va hajmlarda foydalanish maqsadida, ma'lumotlarni samarali va tez saralash uchun bu algoritmlardan birini tanlash tavsiya etiladi.
|
| |