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
- Minimum Tapma: Massivdə ən kiçik elementi tap
- Dəyişdirmə: Onu birinci mövqe ilə dəyiş
- Təkrar: Qalan hissə üçün prosesi təkrarla
- 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)