Sissejuhatus sisestamise sortimisalgoritmi

Sissejuhatus sisestamise sortimisalgoritmi

Lisamise sortimine on tehnika, mis töötab sorteeritud alamloendi abil ja lisab sellele sorteerimata loendist pidevalt väärtuse, kuni kogu loend on sorteeritud.





Algoritm algab esimese loendiüksusega sorteeritud alamloendina. Seejärel võrreldakse järgmist numbrit esimese numbriga. Kui see on suurem, sisestatakse see esimesse indeksisse. Vastasel juhul jääb see indeksisse.





Seejärel võrreldakse kolmandat väärtust kahe teisega ja sisestatakse seejärel õigesse indeksisse. See protsess jätkub, kuni kogu loend on sorteeritud.





Lähem ülevaade sisestamise sortimisest

Ülaltoodud kirjeldus ei pruugi teie jaoks mõistlik olla. Näide peaks aitama teil palju paremini mõista.

Oletame, et teil on nimekiri: [39, 6, 2, 51, 30, 42, 7].



Algoritm tuvastab sorteeritud alamloendi esimese väärtusena 39. Seejärel liigub hindamine teisele positsioonile.

Seotud: Dünaamiline programmeerimine: näited, levinumad probleemid ja lahendused





Seejärel võrreldakse 6 ja 39. Kuna 6 on väiksem kui 39, sisestatakse 6 esimesse ja 39 teise kohta. Uus nimekirjade järjekord on pärast seda, kui esimene läbimine on nüüd:

[6, 39, 2, 51, 30, 42, 7]





Nüüd liigub hindamine kolmandale positsioonile. 2 võrreldakse kahe viimase numbriga ja sisestatakse seejärel õigesse asendisse. Uus nimekirja järjekord on pärast seda, kui teine ​​läbimine on nüüd:

[2, 6, 39, 51, 30, 42, 7]

Kolmanda läbimise korral on loendite järjekord järgmine:

[2, 6, 39, 51, 30, 42, 7]

Protsessi korratakse, kuni kogu loend on sorteeritud.

Vaadake allolevat diagrammi, mis võtab need toimingud kokku:

Algoritmi analüüs

Sisestamise sortimise ajaline keerukus on O (n2), just nagu mullide sorteerimine . Võrdluste arv halvimal juhul on kõigi täisarvude summa 1 kuni (n-1), andes ruutmeetrise summa.

Koodi rakendamine

Allpool olev Pythoni ja Java kood näitab, kuidas saate rakendada sisestamise sortimise meetodit.

Python:

def insertionSort(mylist):
for step in range(1, len(mylist)):
current_element = mylist[step]
position = step
while position > 0 and mylist[position - 1] > current_element:
mylist[position] = mylist[position - 1]
position = position - 1
mylist[position] = current_element

Java:

void insertionSort(int[] myarray) {
int n = myarray.length;
for (int x = 1; x int key = myarray[x];
int y = x-1;
while ( (y > -1) && ( myarray [y] > key ) ) {
myarray [y+1] = myarray [y];
y--;
}
myarray[y+1] = key;
}
}

Parem kodeerimine pseudokoodiga

Ülaltoodud koodinäited on esitatud ilma pseudokoodita, millele saate viidata selle algoritmi kirjutamiseks teistes keeltes. Enamikule programmeerijatele (kaasa arvatud autor) meeldib joosta oma klaviatuuride juurde pärast seda, kui neile on räägitud, kuidas programm töötab.

See lähenemisviis on kahjuks vigade all, kuna programmi loogika muutub keerulisemaks. Kuidas soovite oma programmeerimismängu tasandada, õppides pseudokoodi kasutama?

Jaga Jaga Piiksuma E -post Mis on pseudokood ja kuidas see teeb teid paremaks arendajaks?

Kas näete vaeva programmeerimise õppimisega? Koodiga hakkama saamiseks õppige pseudokoodi. Kuid mis on pseudokood ja kas see võib tõesti aidata?

Loe edasi
Seotud teemad
  • Programmeerimine
  • Java
  • Python
  • Kodeerimise õpetused
Autori kohta Jerome Davidson(22 artiklit avaldatud)

Jerome on MakeUseOfi personalikirjanik. Ta hõlmab artikleid programmeerimise ja Linuxi kohta. Ta on ka krüptohuviline ja jälgib alati krüptotööstust.

Kuidas ma saan Microsoft Wordi oma arvutisse?
Veel Jerome Davidsonilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin