Selection sort g’oyasi juda ham oddiy: har qadamda arrayning saralanmagan qismidagi eng kichik (yoki eng katta) elementni topib saralangan qism oxiriga qo’shib ketish.
Algoritm qadamlari
Yuqorida aytganimizdek arrayda ikkita qism saralanmagan va saralangan qism bo’ladi. Algoritm boshida array butunligicha saralanmagan qismda bo’ladi va algoritm oxirida esa saralangan qismga o’tadi.
Array boshidan yurib chiqamiz.
Har bir qadamda saralanmagan qismdagi eng kichik elementni topib uni saralanmagan qism boshidagi element bilan almashtiramiz.
Oxirgi element avtomatik tarzda o’z joyida bo’lib qoladi.
Bu jarayonni vizual qanday bo’lishini ham ko’rishingiz mumkin:
Bu narsa esa soddalashgan holda O(n²) ga teng bo’lishi haqida gaplashib o’tgandik.
Algoritm implementatsiyasiga o’zingiz mustaqil urinib ko’ring.
//C# program for implementation
// of Selection Sort
using System;
class GFG
{
static void sort(int []arr)
{
int n = arr.Length;
// One by one move boundary of unsorted subarray
for (int i = 0; i < n - 1; i++)
{
// Find the minimum element in unsorted array
int min_idx = i;
for (int j = i + 1; j < n; j++)
if (arr[j] < arr[min_idx])
min_idx = j;
// Swap the found minimum element with the first
// element
int temp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
}
}
// Prints the array
static void printArray(int []arr)
{
int n = arr.Length;
for (int i=0; i Console.Write(arr[i]+" ");
Console.WriteLine();
}
// Driver code
public static void Main()
{
int []arr = {64,25,12,22,11};
sort(arr);
Console.WriteLine("Sorted array");
printArray(arr);
}
}
// This code is contributed by Sam007
Sorted array: 11 12 22 25 64
17.metodlar haqida
o'p hollarda maxsus delegatlarni qo'lda belgilashga hojat qolmasligi uchun C# tarkibiga umumiy delegat turlari Func va Action kiritilgan.
Func bu - System nomlar fazosiga kiritilgan umumiy delegatdir va u parametrlari bo'lmagan metodni kapsulaga soladi va parametr bilan ko'rsatilgan turdagi qiymatni qaytaradi. Bunda nol yoki undan ortiq kirish parametrlari va bitta chiqish parametri mavjud hisoblanib, oxirgi parametr har doim chiqish parametri sifatida bo'ladi. Func delegati parametrlari <> (burchakli qavs)lar ichida ko'rsatiladi.
Bitta kirish va chiqish parametriga ega Func delegatining umumiy ko'rinishi: