Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Taulukon Manuaalinen Lajittelu | Taulukon Käsittely ja Lajittelu
C#-Taulukot

Taulukon Manuaalinen Lajittelu

Pyyhkäise näyttääksesi valikon

Lajittelu on perustoiminto ohjelmoinnissa, koska sen avulla voidaan järjestää tietoa tehokkaampaa hakua, analysointia ja esittämistä varten. Vaikka C#:ssa on sisäänrakennettuja menetelmiä taulukoiden lajitteluun, lajittelualgoritmien toiminnan ymmärtäminen antaa arvokasta näkemystä algoritmiseen ajatteluun ja ongelmanratkaisuun. Manuaaliset lajittelualgoritmit, kuten selection sort, havainnollistavat, miten alkioita verrataan ja siirretään vaihe vaiheelta, kunnes taulukko on lajiteltu. Tämä ymmärrys on tärkeää tilanteissa, joissa tarvitaan räätälöityä lajittelulogiikkaa tai työskennellään ympäristöissä, joissa kirjastotuki on rajallista.

Note
Määritelmä

Selection sort on yksinkertainen lajittelualgoritmi, joka toistuvasti valitsee pienimmän (nousevassa järjestyksessä) tai suurimman (laskevassa järjestyksessä) alkion taulukon lajittelettavasta osasta ja siirtää sen oikealle paikalle lajiteltuun osaan.

Program.cs

Program.cs

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
using 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(); } } }

Valintalajittelu toimii jakamalla taulukon lajiteltuun ja lajittelemattomaan osaan. Jokaisessa vaiheessa se valitsee pienimmän alkion lajittelemattomasta osasta ja vaihtaa sen ensimmäisen lajittelemattoman alkion kanssa, jolloin lajiteltu osa kasvaa yhdellä.

Yllä olevassa koodissa käydään läpi jokainen taulukon alkio lukuun ottamatta viimeistä. Jokaiselle sijainnille i etsitään pienin arvo taulukon loppuosasta (kohdasta i + 1 loppuun asti). Kun pienempi alkio löytyy, päivitetään minIndex. Sisemmän silmukan jälkeen vaihdetaan alkio kohdassa i ja kohdassa minIndex, jolloin pienin arvo sijoitetaan nykyiseen kohtaan. Tätä prosessia toistetaan, kunnes koko taulukko on lajiteltu nousevaan järjestykseen.

Program.cs

Program.cs

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
using 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(); } } }

Koodi määrittelee Program-luokan, jossa on Main-metodi, joka havainnollistaa kokonaislukutaulukon lajittelua laskevaan järjestykseen käyttäen valintalajittelua. Aluksi alustetaan numbers-taulukko ja tulostetaan sen alkuperäinen sisältö. Tämän jälkeen kutsutaan SelectionSortDescending-metodia, joka lajittelee taulukon suurimmasta pienimpään. Tämä metodi etsii toistuvasti suurimman arvon lajittelemattomasta osasta ja vaihtaa sen ensimmäisen lajittelemattoman alkion kanssa. Lajittelun jälkeen ohjelma tulostaa päivitetyn taulukon, jossa alkiot ovat laskevassa järjestyksessä.

1. Mikä on valintajärjestämisen aikavaativuus?

2. Miten valintajärjestäminen eroaa kuplajärjestämisestä?

3. Miksi järjestäminen kannattaa joskus toteuttaa itse sisäänrakennettujen menetelmien sijaan?

question mark

Mikä on valintajärjestämisen aikavaativuus?

Valitse oikea vastaus

question mark

Miten valintajärjestäminen eroaa kuplajärjestämisestä?

Valitse oikea vastaus

question mark

Miksi järjestäminen kannattaa joskus toteuttaa itse sisäänrakennettujen menetelmien sijaan?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 3

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 3. Luku 3
some-alt