Τι είναι η Ταξινόμηση με Επιλογή;
Η ταξινόμηση με επιλογή (Selection Sort) είναι ένας απλός αλγόριθμος που χρησιμοποιείται για να ταξινομήσει μια λίστα ή έναν πίνακα αριθμών. Ο αλγόριθμος λειτουργεί με τον εξής τρόπο:
- Ψάχνει το μικρότερο στοιχείο από τη λίστα.
- Ανταλλάσσει το μικρότερο στοιχείο με το πρώτο στοιχείο της λίστας.
- Επαναλαμβάνει τη διαδικασία για τα υπόλοιπα στοιχεία.
Βασικά Βήματα της Ταξινόμησης με Επιλογή
- Αρχικοποίηση:
- Ο αλγόριθμος ξεκινάει με το πρώτο στοιχείο της λίστας ή του πίνακα και το θεωρεί ως το ελάχιστο στοιχείο.
- Εύρεση Ελάχιστου:
- Στη συνέχεια, αναζητά το ελάχιστο στοιχείο στον υπόλοιπο πίνακα (δηλαδή από τη θέση του αρχικού στοιχείου και μετά). Αυτό γίνεται συγκρίνοντας το ελάχιστο στοιχείο με κάθε στοιχείο του υπόλοιπου πίνακα.
- Ανταλλαγή:
- Όταν εντοπιστεί το ελάχιστο στοιχείο, τοποθετείται στην αρχή της λίστας, ανταλλάσσοντας το με το στοιχείο που βρισκόταν εκεί αρχικά.
- Επανάληψη:
- Ο αλγόριθμος επαναλαμβάνει τη διαδικασία για το επόμενο στοιχείο της λίστας, θεωρώντας το ως το νέο ελάχιστο, και αναζητά το ελάχιστο στοιχείο στον υπόλοιπο πίνακα, επαναλαμβάνοντας την ίδια διαδικασία μέχρι να ταξινομηθεί όλη η λίστα.
Πώς λειτουργεί η Ταξινόμηση με Επιλογή;
Ας δούμε τη διαδικασία βήμα προς βήμα:
- Επιλογή του μικρότερου στοιχείου: Ξεκινάμε από το πρώτο στοιχείο και κοιτάμε όλα τα υπόλοιπα στοιχεία για να βρούμε το μικρότερο.
- Ανταλλαγή: Αφού βρούμε το μικρότερο, το ανταλλάσσουμε με το πρώτο στοιχείο.
- Επαναλαμβάνουμε: Επαναλαμβάνουμε τη διαδικασία για το υπόλοιπο κομμάτι της λίστας (εκτός από το πρώτο στοιχείο που είναι ήδη στη σωστή θέση).
Παράδειγμα
Ας δούμε πώς δουλεύει η ταξινόμηση με επιλογή με έναν πίνακα αριθμών:
Αρχικός Πίνακας
[64, 25, 12, 22, 11]
Πρώτος γύρος:
- Μικρότερο στοιχείο: 11
- Ανταλλαγή με το 64
- Νέος πίνακας:
[11, 25, 12, 22, 64]
Δεύτερος γύρος:
- Μικρότερο στοιχείο: 12
- Ανταλλαγή με το 25
- Νέος πίνακας:
[11, 12, 25, 22, 64]
Τρίτος γύρος:
- Μικρότερο στοιχείο: 22
- Ανταλλαγή με το 25
- Νέος πίνακας:
[11, 12, 22, 25, 64]
Τέταρτος γύρος:
- Μικρότερο στοιχείο: 25 (δεν αλλάζει)
- Νέος πίνακας:
[11, 12, 22, 25, 64]
Τελευταίος γύρος:
- Μικρότερο στοιχείο: 64 (δεν αλλάζει)
- Τελικός πίνακας:
[11, 12, 22, 25, 64]
Ψευδογλώσσα
Ακολουθεί η ψευδογλώσσα για τον αλγόριθμο ταξινόμησης με επιλογή:
Διαδικασία Ταξινόμηση_Επιλογής(πίνακας)
Για i από 0 έως μήκος(πίνακας) - 1
ελάχιστο_δείκτης <- i
Για j από i + 1 έως μήκος(πίνακας) - 1
Αν πίνακας[j] < πίνακας[ελάχιστο_δείκτης] τότε
ελάχιστο_δείκτης <- j
Τέλος_αν
Τέλος_για
Αν ελάχιστο_δείκτης != i τότε
αντάλλαξε(πίνακας[i], πίνακας[ελάχιστο_δείκτης])
Τέλος_αν
Τέλος_για
Τέλος_Διαδικασίας
C# Κώδικας
Ακολουθεί ο κώδικας σε C# για την ταξινόμηση με επιλογή:
using System;
class Program
{
static void Main()
{
int[] array = { 64, 25, 12, 22, 11 };
SelectionSort(array);
Console.WriteLine("Ταξινομημένος πίνακας: " + string.Join(", ", array));
}
static void SelectionSort(int[] array)
{
// Διατρέχουμε τον πίνακα
for (int i = 0; i < array.Length - 1; i++)
{
// Υποθέτουμε ότι το πρώτο στοιχείο είναι το ελάχιστο
int minIndex = i;
// Ψάχνουμε το ελάχιστο στοιχείο στο υπόλοιπο του πίνακα
for (int j = i + 1; j < array.Length; j++)
{
if (array[j] < array[minIndex])
{
minIndex = j; // Βρίσκουμε το νέο ελάχιστο
}
}
// Αν βρέθηκε διαφορετικό ελάχιστο, το ανταλλάσσουμε
if (minIndex != i)
{
int temp = array[i];
array[i] = array[minIndex];
array[minIndex] = temp;
}
}
}
}