Əsas məzmuna keçin

Selection Sort

Selection Sort, ən sadə sıralama alqorimlərindən biridir. Bu alqoritm, hər addımda massivdən ən kiçik elementi tapır və onu öz yerinə yerləşdirir.

Selection Sort-un Əsas Xüsusiyyətləri

  • Sadəlik: Anlamaq və implementasiya etmək çox asandır
  • İn-place: Əlavə yaddaş tələb etmir
  • Qeyri-stabil: Eyni dəyərə malik elementlərin nisbi sırası dəyişə bilər
  • Seçmə Prinsipi: Hər addımda ən kiçik elementi seçib yerləşdirir

Selection Sort-un İşləmə Prinsipi

  1. Minimum Tapma: Massivdə ən kiçik elementi tap
  2. Dəyişdirmə: Onu birinci mövqe ilə dəyiş
  3. Təkrar: Qalan hissə üçün prosesi təkrarla
  4. Davam: Bütün massiv sıralanana qədər davam et

Selection Sort-un Java-da İmplementasiyası

Koda bax
public class SelectionSort {

// Ana sıralama metodu
public static void selectionSort(int[] arr) {
int n = arr.length;

// Hər posisiya üçün ən kiçik elementi tap
for (int i = 0; i < n - 1; i++) {
// Minimum elementin indeksini tap
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}

// Minimum elementi cari posisiya ilə dəyiş
swap(arr, i, minIndex);
}
}

// İki elementin yerini dəyişən köməkçi metod
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}

// Test
public static void main(String[] args) {
int[] arr = {64, 25, 12, 22, 11, 90};

System.out.println("Original array:");
printArray(arr);

selectionSort(arr);

System.out.println("\nSorted array:");
printArray(arr);
}

// Massivi çap etmək üçün köməkçi metod
private static void printArray(int[] arr) {
for (int i : arr) {
System.out.print(i + " ");
}
System.out.println();
}
}

Zaman və Yaddaş Mürəkkəbliyi

  • Zaman Mürəkkəbliyi:
    • Ən yaxşı hal: O(n²)
    • Orta hal: O(n²)
    • Ən pis hal: O(n²)
  • Yaddaş Mürəkkəbliyi: O(1), in-place alqoritm

Selection Sort-un Üstünlükləri və Çatışmazlıqları

Üstünlüklər

  • Çox sadə və anlaşılan alqoritmdir
  • Əlavə yaddaş tələb etmir (in-place)
  • Minimum sayda dəyişdirmə əməliyyatı aparır
  • Kiçik massivlər üçün məqbuldur

Çatışmazlıqlar

  • O(n²) zaman mürəkkəbliyi səbəbiylə böyük massivlər üçün effektiv deyil
  • Stabil deyil (eyni dəyərli elementlərin sırası dəyişə bilər)
  • Adaptive deyil (artıq sıralanmış massiv üçün də eyni performans)