Tartalomjegyzék[Elrejt][Előadás]
A számítástechnika lényege az algoritmusok és adatstruktúrák bonyolultságának megértése.
Van egy listája azokról az elemekről, amelyeket rendezni kell, de nincs ideje vagy erőforrása bonyolultabb rendezési algoritmus használatára.
A beszúrásos rendezés az egyik legegyszerűbb rendezési algoritmus, de nagy listák esetén lassú lehet.
Az egyszerű megvalósítás és a megértés a programozók kedvencévé tette ezt a módszert. Tökéletes kis listákhoz, vagy ha gyors megoldásra van szüksége.
Ebben a blogbejegyzésben a beillesztési rendezés időbeli bonyolultságát fogjuk megvizsgálni. Ez az algoritmus a tömbök rendezésére szolgál, és futásideje O(n2). Ez azt jelenti, hogy az idő bonyolultsága a tömb méretével nő.
Ez az algoritmus azonban gyakran gyorsabb lehet, mint más rendezési algoritmusok, például a gyorsrendezés.
Nézzük meg közelebbről a beszúrásos rendezés működését!
Mi az a beillesztési rendezési algoritmus?
Egyszerre egy elem, a beillesztési rendezés egy rendezhető tömböt generál, amelyet gyakran listának neveznek.
Például a rendezést olyan bonyolult számítógépes programokban alkalmazzák, mint a fordítók, ahol a tokenek sorrendje fontos a program értelmezéséhez.
Hogyan működik a beszúrásos rendezés?
Amikor beszúrásos rendezést használunk egy tömb rendezésére, az algoritmus úgy indul, hogy megkeresi a legkisebb elemet a listában, és beszúrja a megfelelő helyre.
Ezután megkeresi a következő legkisebb elemet, és beilleszti a megfelelő pozícióba, és így tovább.
Az algoritmus úgy működik, hogy végigpörgeti a listát, és minden elemet összehasonlít az előtte lévővel.
Ha az elemek rossz sorrendben vannak, az algoritmus felcseréli őket. Ezután ellenőrzi, hogy a lista rendezve van-e, és ha igen, akkor az algoritmus véget ér.
A gyakorlatban a beszúrásos rendezést gyakran néhány sornyi kód felhasználásával valósítják meg, így népszerű választás a kis tömbök rendezésére. Ennek az algoritmusnak a használatakor azonban figyelembe kell venni az idő bonyolultságát.
Példa:
Íme egy példa a beszúrásos rendezés működésére. A következő tömböt fogjuk használni:
1, 2, 3, 4, 5, 6
Az algoritmus úgy indul, hogy megkeresi a listában a legkisebb elemet, ami 1. Ezután beszúrja a megfelelő helyre, az első helyre. Ezután megkeresi a következő legkisebb elemet, ami a 2. Beszúrja a megfelelő pozícióba, ami a második pozíció.
Ezután megkeresi a következő legkisebb elemet, ami a 3. Beszúrja a megfelelő pozícióba, ami a harmadik pozíció.
Ezután megkeresi a következő legkisebb elemet, ami a 4. Beszúrja a megfelelő pozícióba, ami a negyedik pozíció, és így tovább. A lista most rendezve!
A példából láthatjuk, hogy az algoritmus hat összehasonlítást és cserét vesz igénybe a lista rendezéséhez. Ez azért van, mert n2 összehasonlítások és cserék egy n elemből álló lista rendezéséhez. Ebben az esetben n=6.
Hogyan javítható a beillesztési rendezési idő bonyolultsága?
Míg a beillesztési rendezés futásideje O(n2), javítható egy jobb rendezési algoritmus, például a gyorsrendezés használatával.
A Quicksort O(n log n) futásidejű, ami sokkal gyorsabb, mint az O(n).2).
Bizonyos esetekben azonban a beszúrásos rendezés gyorsabb lehet, mint a gyorsrendezés.
Például, ha a lista már rendben van, a beszúrás szerinti rendezés kevesebb időt vesz igénybe, mint a gyorsrendezés.
A gyakorlatban a beszúrásos rendezést gyakran néhány sornyi kód felhasználásával valósítják meg, így népszerű választás a kis tömbök rendezésére.
Ennek az algoritmusnak a használatakor azonban figyelembe kell venni az idő bonyolultságát.
Idő bonyolultsága
Legrosszabb eset összetettsége O(n2):
Az időbonyolultság a tömb méretével nő. n kell2 összehasonlítások és swapok egy n elemből álló lista rendezéséhez.
Például, ha van egy 1000-es méretű tömbünk, az algoritmus 1,000,000 XNUMX XNUMX összehasonlítást és cserét vesz igénybe a tömb rendezéséhez.
Legjobb eset összetettsége O(n):
Az idő bonyolultsága megegyezik a bemeneti tömb méretével. én
t n összehasonlításra és cserére van szükség egy n elemből álló lista rendezéséhez. Vegyünk például egy 5-ös méretű tömböt. Az algoritmus öt összehasonlítást és cserét vesz igénybe a tömb rendezéséhez.
Átlagos esetkomplexitás O(n2):
Az időbeli összetettség ebben az esetben a legrosszabb és a legjobb eset bonyolultsága között van.
n kell2 összehasonlítások és swapok egy n elemből álló lista rendezéséhez.
Így a beszúrásos rendezés egy stabil rendezési algoritmus.
Miért stabil a beszúrásos rendezés?
A beillesztési rendezés stabil, mert megőrzi az egyenlő elemek sorrendjét a bemeneti tömbben.
Ez számos alkalmazásnál fontos, például adatlekéréshez vagy pénzügyi elemzéshez. Például, ha van két számlistánk, és ezeket össze akarjuk hasonlítani, akkor ügyelnünk kell arra, hogy az elemek sorrendje megmaradjon.
Ha a listák nincsenek rendezve, nem hasonlítjuk össze őket pontosan.
Hagy egy Válaszol