Manuell Sortering Av Arrayer
Svep för att visa menyn
Sortering är en grundläggande operation inom programmering eftersom det hjälper dig att organisera data för att göra sökning, analys och presentation av information mer effektiv. Även om C# erbjuder inbyggda metoder för att sortera arrayer, ger förståelse för hur sorteringsalgoritmer fungerar värdefulla insikter i algoritmiskt tänkande och problemlösning. Manuella sorteringsalgoritmer, såsom selection sort, låter dig se hur element jämförs och flyttas, steg för steg, för att uppnå en sorterad array. Denna förståelse är avgörande i situationer där du behöver anpassad sorteringslogik eller arbetar i miljöer med begränsat biblioteksstöd.
Selection sort är en enkel sorteringsalgoritm som upprepade gånger väljer det minsta (för stigande ordning) eller största (för fallande ordning) elementet från den osorterade delen av arrayen och flyttar det till dess rätta position i den sorterade 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(); } } }
Urvalssortering fungerar genom att dela upp arrayen i en sorterad och en osorterad del. Vid varje steg väljs det minsta elementet från den osorterade delen och byts ut mot det första osorterade elementet, vilket gör att den sorterade delen växer med ett element.
I koden ovan börjar du med att loopa igenom varje element i arrayen utom det sista. För varje position i letar du efter det minsta värdet i resten av arrayen (från i + 1 till slutet). När du hittar ett mindre element uppdaterar du minIndex. Efter den inre loopen byter du plats på elementet vid position i med elementet vid minIndex, vilket säkerställer att det minsta värdet placeras på aktuell position. Denna process upprepas tills hela arrayen är sorterad i stigande ordning.
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 definierar en Program-klass med en Main-metod som visar hur man sorterar en heltalsarray i fallande ordning med hjälp av urvalssortering. Du börjar med att initiera arrayen numbers och skriver ut dess ursprungliga innehåll. Därefter anropas metoden SelectionSortDescending för att sortera arrayen från störst till minst. Denna metod fungerar genom att upprepade gånger söka efter det största värdet i den osorterade delen av arrayen och byta plats på det med det första osorterade elementet. Efter sorteringen skriver programmet ut den uppdaterade arrayen, där elementen visas i fallande ordning.
1. Vad är tidskomplexiteten för urvalssortering (selection sort)?
2. Hur skiljer sig urvalssortering från bubblsortering?
3. Varför kan du vilja implementera sortering manuellt istället för att använda inbyggda metoder?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal