Bevezetés a beszúrási rendezési algoritmusba

Bevezetés a beszúrási rendezési algoritmusba

A Beszúrás rendezés egy olyan technika, amely egy rendezett allistát használ, és folyamatosan hozzáad egy értéket a nem rendezett listától a teljes lista rendezéséig.





Az algoritmus az első listaelemmel kezdődik, mint rendezett allista. Ezután összehasonlítja a következő számot az elsővel. Ha nagyobb, akkor az első indexbe kerül. Ellenkező esetben az indexben marad.





A harmadik értéket ezután összehasonlítják a másik kettővel, majd beillesztik a megfelelő indexbe. Ez a folyamat addig tart, amíg a teljes lista rendezésre nem kerül.





Közelebbről a beillesztés rendezése

Lehet, hogy a fenti leírás nem volt értelmes számodra. Egy példa segít jobban megérteni.

Tegyük fel, hogy van egy listája: [39, 6, 2, 51, 30, 42, 7].



Az algoritmus a 39 -et azonosítja a rendezett allista első értékeként. Az értékelés ezután a második pozícióba lép.

Kapcsolódó: Dinamikus programozás: példák, gyakori problémák és megoldások





A 6 -ot ezután a 39 -gyel hasonlítjuk össze. Mivel a 6 kevesebb, mint 39, a 6 beillesztésre kerül az első pozícióba, a 39 pedig a másodikba. Az új lista sorrendje az első menet után van:

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





Az értékelés most a harmadik pozícióba kerül. A 2. ábrát összehasonlítjuk az utolsó két számmal, majd behelyezzük a megfelelő pozícióba. Az új lista sorrendje a második menet után van:

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

A harmadik lépésnél a lista sorrendje a következő:

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

A folyamat addig ismétlődik, amíg a teljes lista rendezésre nem kerül.

Tekintse meg az alábbi diagramot, amely összefoglalja ezeket a műveleteket:

Algoritmus elemzés

A beszúrási rendezés időbeli összetettsége O (n2), akárcsak buborék rendezés . Az összehasonlítások száma a legrosszabb esetben az összes egész szám összege 1-től (n-1), ami másodfokú összeget eredményez.

Kód implementáció

Az alábbi Python és Java kód bemutatja, hogyan valósíthatja meg a Beszúrás rendezési módszert.

Piton:

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

Jáva:

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;
}
}

Jobb kódolás pszeudokóddal

A fenti kódpéldákat pszeudokód nélkül adtuk meg, amelyre hivatkozva más nyelveken is megírhatja ezt az algoritmust. A legtöbb programozó (a szerzőt is beleértve) szeret a billentyűzetükhöz futni, miután „suttogva” elmondták a program működéséről.

Ez a megközelítés sajnos hajlamos a hibákra, mivel a program logikája bonyolultabbá válik. Hogyan szeretné szintre emelni programozási játékát az álkód használatának elsajátításával?

Részvény Részvény Csipog Email Mi az álkód és hogyan tesz jobb fejlesztővé?

Nehezen tanul programozni? Ismerje meg a kódot az álkód tanulásával. De mi az álkód és valóban segíthet?

Olvassa tovább
Kapcsolódó témák
  • Programozás
  • Jáva
  • Piton
  • Kódolási oktatóanyagok
A szerzőről Jerome Davidson(22 cikk megjelent)

Jerome a MakeUseOf munkatársa. A programozásról és a Linuxról szóló cikkekkel foglalkozik. Ő is kriptorajongó, és mindig figyelemmel kíséri a kriptoipart.

ingyenes e -könyvek letöltése és olvasása
További Jerome Davidson

Iratkozzon fel hírlevelünkre

Csatlakozz hírlevelünkhöz, ahol technikai tippeket, véleményeket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!

Feliratkozáshoz kattintson ide