selection sort (tsz. selection sorts)
A kiválasztásos rendezés egy egyszerű és könnyen érthető rendezési algoritmus, amely működésében a következő elvet követi:
Bár nem a leghatékonyabb rendezési algoritmus, oktatási célokra és kisebb méretű adathalmazokhoz megfelelő lehet.
A Selection Sort működését a következő lépésekben írhatjuk le:
Az algoritmus in-place módon működik, azaz nem használ külön segédtömböt, hanem közvetlenül a bemeneti tömböt módosítja.
Lássunk egy egyszerű implementációt C++ nyelven:
#include <iostream>
using namespace std;
// Kiválasztásos rendezés algoritmus
void selectionSort(int arr, int n) {
for (int i = 0; i < n - 1; i++) {
int minIndex = i; // Feltételezzük, hogy az i-edik elem a legkisebb
// Keresd meg a legkisebb elemet a hátralévő részből
for (int j = i + 1; j < n; j++) {
if (arr < arr) {
minIndex = j;
}
}
// Ha találtunk kisebb elemet, akkor csere
if (minIndex != i) {
swap(arr, arr);
}
}
}
// Tömb kiíratása
void printArray(int arr, int n) {
for (int i = 0; i < n; i++) {
cout << arr << " ";
}
cout << endl;
}
// Főprogram
int main() {
int arr = {64, 25, 12, 22, 11};
int n = sizeof(arr) / sizeof(arr);
cout << "Eredeti tömb: ";
printArray(arr, n);
selectionSort(arr, n);
cout << "Rendezett tömb: ";
printArray(arr, n);
return 0;
}
selectionSort
függvény:
printArray
függvény:
main
függvény:
selectionSort
függvényt.
Eredeti tömb: 64 25 12 22 11 Rendezett tömb: 11 12 22 25 64
Tegyük fel, hogy a bemeneti tömb a következő:
A legkisebb elem: 11
Csere az első elemmel:
A legkisebb elem a maradékból: 12
Csere a második elemmel:
A legkisebb elem: 22
Csere a harmadik elemmel:
A legkisebb elem: 25
Nincs szükség cserére:
A kiválasztásos rendezés időbeli komplexitása:
A belső ciklus mindig (n-i-1) lépésből áll, így a teljes iteráció: Ezért a kiválasztásos rendezés nem a leghatékonyabb algoritmus, különösen nagyobb adathalmazok esetén.
✔️ Előnyök: - Egyszerű és könnyen érthető. - Nem igényel extra memóriát (in-place működés). - Stabil a memóriahasználata.
❌ Hátrányok: - Lassú nagyobb tömböknél (O(n²) időkomplexitás). - Nem stabil (ha nem megfelelő módon implementálják). - Nem hatékony rendezett vagy majdnem rendezett adathalmazokra.
A kiválasztásos rendezés egy alapvető, bár nem túl hatékony algoritmus, amely kis méretű tömbök rendezésére alkalmas. Bár a teljesítménye O(n²), oktatási célokra és egyszerűbb feladatokhoz megfelelő lehet.
Ha hatékonyabb megoldásra van szükség, akkor érdemes más algoritmusokat, például quick sort vagy merge sort alkalmazni, amelyek gyorsabbak és optimalizáltabbak nagyobb adathalmazok esetén.