Manuel Arraysortering
Stryg for at vise menuen
Sortering er en grundlæggende operation i programmering, da det hjælper med at organisere data for at gøre søgning, analyse og præsentation af information mere effektiv. Selvom C# tilbyder indbyggede metoder til at sortere arrays, giver forståelsen af, hvordan sorteringsalgoritmer fungerer, værdifuld indsigt i algoritmisk tænkning og problemløsning. Manuelle sorteringsalgoritmer, såsom selection sort, giver mulighed for at se, hvordan elementer sammenlignes og flyttes, trin for trin, for at opnå et sorteret array. Denne forståelse er afgørende i situationer, hvor der er behov for tilpasset sorteringslogik eller arbejdes i miljøer med begrænset biblioteksunderstøttelse.
Selection sort er en simpel sorteringsalgoritme, der gentagne gange vælger det mindste (for stigende orden) eller største (for faldende orden) element fra den usorterede del af arrayet og flytter det til dets korrekte position i den sorterede del.
Program.cs
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849using System; namespace ConsoleApp { public class Program { public static void Main(string[] args) { int[] numbers = { 5, 2, 9, 1, 5, 6 }; Console.WriteLine("Original array:"); PrintArray(numbers); SelectionSortAscending(numbers); Console.WriteLine("Sorted array (ascending):"); PrintArray(numbers); } public static void SelectionSortAscending(int[] array) { int n = array.Length; for (int i = 0; i < n - 1; i++) { int minIndex = i; for (int j = i + 1; j < n; j++) { if (array[j] < array[minIndex]) { minIndex = j; } } int temp = array[i]; array[i] = array[minIndex]; array[minIndex] = temp; } } public static void PrintArray(int[] array) { foreach (int num in array) { Console.Write(num + " "); } Console.WriteLine(); } } }
Selection sort fungerer ved at opdele arrayet i en sorteret og en usorteret del. Ved hvert trin vælges det mindste element fra den usorterede del og byttes med det første usorterede element, hvilket udvider den sorterede del med én.
I koden ovenfor starter du med at gennemløbe hvert element i arrayet undtagen det sidste. For hver position i leder du efter den mindste værdi i resten af arrayet (fra i + 1 til slutningen). Når du finder et mindre element, opdateres minIndex. Efter den indre løkke byttes elementet på position i med elementet på minIndex, så den mindste værdi placeres på den aktuelle position. Denne proces gentages, indtil hele arrayet er sorteret i stigende rækkefølge.
Program.cs
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849using System; namespace ConsoleApp { public class Program { public static void Main(string[] args) { int[] numbers = { 3, 8, 4, 7, 2, 9 }; Console.WriteLine("Original array:"); PrintArray(numbers); SelectionSortDescending(numbers); Console.WriteLine("Sorted array (descending):"); PrintArray(numbers); } public static void SelectionSortDescending(int[] array) { int n = array.Length; for (int i = 0; i < n - 1; i++) { int maxIndex = i; for (int j = i + 1; j < n; j++) { if (array[j] > array[maxIndex]) { maxIndex = j; } } int temp = array[i]; array[i] = array[maxIndex]; array[maxIndex] = temp; } } public static void PrintArray(int[] array) { foreach (int num in array) { Console.Write(num + " "); } Console.WriteLine(); } } }
Koden definerer en Program-klasse med en Main-metode, der demonstrerer, hvordan man sorterer et heltalsarray i faldende rækkefølge ved hjælp af selection sort. Du starter med at initialisere numbers-arrayet og udskrive dets oprindelige indhold. Metoden SelectionSortDescending kaldes derefter for at sortere arrayet fra størst til mindst. Denne metode fungerer ved gentagne gange at finde den maksimale værdi i den usorterede del af arrayet og bytte den med det første usorterede element. Efter sorteringen udskriver programmet det opdaterede array, hvor elementerne er arrangeret i faldende rækkefølge.
1. Hvad er tidskompleksiteten for selection sort?
2. Hvordan adskiller selection sort sig fra bubble sort?
3. Hvorfor kan man vælge at implementere sortering manuelt i stedet for at bruge indbyggede metoder?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat