Manuell Sortering Av Matriser
Sveip for å vise menyen
Sortering er en grunnleggende operasjon i programmering fordi det hjelper deg å organisere data for mer effektiv søking, analyse og presentasjon av informasjon. Selv om C# tilbyr innebygde metoder for å sortere arrayer, gir forståelse av hvordan sorteringsalgoritmer fungerer verdifull innsikt i algoritmisk tenkning og problemløsning. Manuelle sorteringsalgoritmer, som selection sort, lar deg se hvordan elementer sammenlignes og flyttes, steg for steg, for å oppnå en sortert array. Denne forståelsen er avgjørende i situasjoner hvor du trenger tilpasset sorteringslogikk eller arbeider i miljøer med begrenset biblioteksstøtte.
Selection sort er en enkel sorteringsalgoritme som gjentatte ganger velger det minste (for stigende rekkefølge) eller største (for synkende rekkefølge) elementet fra den usorterte delen av arrayen og flytter det til riktig posisjon i den sorterte delen.
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(); } } }
Utvalgssortering fungerer ved å dele arrayet inn i en sortert og en usortert del. For hvert steg velges det minste elementet fra den usorterte delen og byttes med det første usorterte elementet, slik at den sorterte delen øker med én.
I koden ovenfor starter du med å iterere gjennom hvert element i arrayet bortsett fra det siste. For hver posisjon i leter du etter den minste verdien i resten av arrayet (fra i + 1 til slutten). Når du finner et mindre element, oppdaterer du minIndex. Etter den indre løkken bytter du elementet på posisjon i med elementet på minIndex, slik at den minste verdien plasseres på gjeldende posisjon. Denne prosessen gjentas til hele arrayet er sortert i stigende rekkefø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 som demonstrerer hvordan man sorterer et heltallsarray i synkende rekkefølge ved bruk av utvalgssortering. Du starter med å initialisere numbers-arrayet og skriver ut dets opprinnelige innhold. Deretter kalles SelectionSortDescending-metoden for å sortere arrayet fra størst til minst. Denne metoden fungerer ved gjentatte ganger å finne den største verdien i den usorterte delen av arrayet og bytte den med det første usorterte elementet. Etter sorteringen skriver programmet ut det oppdaterte arrayet, som viser elementene i synkende rekkefølge.
1. Hva er tidskompleksiteten til utvalgssortering (selection sort)?
2. Hvordan skiller utvalgssortering seg fra boblesortering?
3. Hvorfor kan det være aktuelt å implementere sortering manuelt i stedet for å bruke innebygde metoder?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår