|
Dasturlash asoslar
|
bet | 6/10 | Sana | 14.05.2024 | Hajmi | 0,66 Mb. | | #230790 |
Bog'liq Massiv kurs ishiNatija gif:
Insertion Sort (saralash):
Har bir bosqichda o‘rtadagi elementni o‘ng tomonga joylashtiradi.
Tizimi tashkil etgan massivni (o‘ng tomonda joylashgan elementni tashlamasdan) qayta qidirish orqali bu jarayonni takrorlaydi.
Merge Sort (Biriktirish orqali saralash):
Massivni ikki qismga bo‘lib, har bir qismni alohida saralaydi.
Keyin, saralgan qismlarni biriktirib, to‘g’ridan to‘g’ri saralgan massivni olish uchun o‘zaro bog’lab chiqadi.
Misol:
static int[] temporaryArray;
static void Merge(int[] array, int start, int middle, int end)
{
var leftPtr = start;
var rightPtr = middle + 1;
var length = end - start + 1;
for (int i = 0; i < length; i++)
{
if (rightPtr > end || (leftPtr <= middle && array[leftPtr] < array[rightPtr]))
{
temporaryArray[i] = array[leftPtr];
leftPtr++;
}
else
{
temporaryArray[i] = array[rightPtr];
rightPtr++;
}
}
for (int i = 0; i < length; i++)
array[i + start] = temporaryArray[i];
}
static void MergeSort(int[] array, int start, int end)
{
if (start == end) return;
var middle = (start + end) / 2;
MergeSort(array, start, middle);
MergeSort(array, middle + 1, end);
Merge(array, start, middle, end);
}
static void MergeSort(int[] array)
{
temporaryArray = new int[array.Length];
MergeSort(array, 0, array.Length - 1);
}
public static void Main()
{
int [] array = {3,2,5,7,8,1,9 };
MergeSort(array);
foreach (var e in array)
Console.WriteLine(e);
Console.ReadKey();
}
Natija gif:
Quick Sort (Tezroq saralash):
Massivdan bir element tanlaydi (pivot element) va massivni bu pivot element bo‘yicha ikki qisimga bo‘ladi.
Chap tomondagi qismini va o‘ng tomondagi qismini alohida saralaydi.
O‘nlik saralangan qismlarni biriktiradi.
Misol:
static void HoareSort(int[] array, int start, int end)
{
if (end == start) return;
var pivot = array[end];
var storeIndex = start;
for (int i = start; i <= end - 1; i++)
if (array[i] <= pivot)
{
var t = array[i];
array[i] = array[storeIndex];
array[storeIndex] = t;
storeIndex++;
}
var n = array[storeIndex];
array[storeIndex] = array[end];
array[end] = n;
if (storeIndex > start) HoareSort(array, start, storeIndex - 1);
if (storeIndex < end) HoareSort(array, storeIndex + 1, end);
}
static void HoareSort(int[] array)
{
HoareSort(array, 0, array.Length - 1);
}
static Random random = new Random();
public static void Main()
{
int [] array = {3,2,5,7,8,1,9 };
HoareSort(array);
foreach (var e in array)
Console.WriteLine(e);
Console.ReadKey();
}
|
| |