Bevezetés a héjrendező algoritmusba

Bevezetés a héjrendező algoritmusba

A kagyló rendezése olyan rendezési technika, amely egy adott listát allistákra oszt, majd beszúrási rendezéssel rendezi őket. Az algoritmus rést használ n amely olyan tárgyakat választ n szakadék az allistákhoz.





Az allistákat ezután beszúrási rendezéssel rendezik, majd egyesítik. A kombinált lista nincs teljesen rendezve, de az algoritmus előnye, hogy az elemek közelebb vannak a végső pozíciójukhoz.





A beszúrási rendezést ismét a lista végső rendezésére használják.





Közelebbről a Shell Sort

Lehet, hogy a fenti leírásnak nem sok értelme volt, de egy példa segíthet. Tegyük fel, hogy megvan a lista: [39, 6, 2, 51, 30, 42, 7, 4, 16] és a hézag értéke három.

Az első allistán elemek lennének: 39, 51, 7



A második allista: 6, 30, 4

hogyan készítsek ellenőrző listát az Excel -ben

A harmadik és utolsó allista: 2, 42, 16





A beillesztés rendezése után az egyes allistákat az alábbiak szerint soroljuk fel:

Az első: 7, 39, 51





A második: 4, 6, 30

A harmadik: 2, 16, 42

A rendezett allista most meghatározott módon kombinálódik. Minden allistás elem bekerül az indexbe, amelyből az eredeti rendezés nélküli allista értékét gyűjtötték.

Összefüggő: Bevezetés a buborékrendező algoritmusba

Ezért az alábbi sorrendben végez:

a számítógép nem ébred fel alvásból

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

Figyelje meg, hogy a lista még mindig nincs rendezve, de az elemek közelebb vannak azokhoz a pozíciókhoz, amelyekben állniuk kell. Miután végrehajtotta a beszúrási rendezést ezen a listakombináción, a lista végül rendezésre kerül:

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

Algoritmus elemzés

A héjrendezés összetettsége O (n) és O (n2) között van. Ennek a következtetésnek a kiszámítása túlmutat a cikk keretein.

hogyan lehet elérni az Android telefont a számítógépen

Python implementáció:

def shellSort(my_list):
n = len(my_list)
interval = n // 2 # floor division
while interval > 0:
for val in range(interval, n):
temp = my_list[val]
x = val
while x >= interval and my_list[x - interval] > temp:
my_list[x] = my_list[x - interval]
x = x - interval

my_list[x] = temp
interval = interval // 2

Tovább az egyesítési rendezéshez

Számos rendezési algoritmus létezik, mindegyik egyedi működéssel. Az egyesítési sorrend például megosztási és hódítási stratégiát alkalmaz, és összetettsége O (nlogn).

A Merge sort bizonyos esetekben jobb, mint a shell sort, és mindenképpen érdemes megnézni. A következőnek kell lennie a rendezési algoritmusok olvasási listájában.

Részvény Részvény Csipog Email Bevezetés az egyesítési rendezési algoritmusba

Tanulmányozza az adatstruktúrákat és az algoritmusokat? Tanuljon meg egy teljesen új módot a tömb rendezésére a Merge sort használatával.

Olvassa tovább
Kapcsolódó témák
  • Programozás
  • Programozás
  • Piton
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. Szintén kriptorajongó, és mindig figyelemmel kíséri a kriptoipart.

További Jerome Davidson

Iratkozzon fel hírlevelünkre

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

Feliratkozáshoz kattintson ide