Razvrščanje lupin je tehnika razvrščanja, ki razdeli dani seznam na podvrste in jih nato razvrsti z razvrščanjem vstavljanja. Algoritem uporablja vrzel n ki izbere predmete, ki so n narazen, da sestavljajo podvrste.
Seznami se nato razvrstijo z razvrščanjem vstavljanja, nato pa se združijo. Kombinirani seznam ni v celoti razvrščen, vendar daje algoritmu prednost, ker ima postavke bližje svojim končnim položajem.
Za razvrščanje seznama se znova uporabi razvrščanje vstavkov.
Natančnejši pogled na Shell Sort
Zgornji opis morda ni imel veliko smisla, vendar bi moral biti v pomoč primer. Recimo, da imate seznam: [39, 6, 2, 51, 30, 42, 7, 4, 16] in vrednost vrzeli tri.
Prvi podnapis bi imel postavke: 39, 51, 7
Drugi podlist: 6, 30, 4
kako povedati amazonu, da niste dobili paketa
Tretji in zadnji podnapis: 2, 42, 16
Po razvrščanju vstavljanja bi bili vsi podvrste razvrščeni kot spodaj:
Prvi: 7, 39, 51
Drugi: 4, 6, 30
Tretji: 2, 16, 42
Razvrščeni podnapis je zdaj na poseben način združen. Vsaka postavka podvpisa je vnesena v indeks, iz katerega je bila zbrana prvotna nerazvrščena vrednost podnapisa.
Povezano: Uvod v algoritem razvrščanja mehurčkov
Tako boste dobili naslednje zaporedje:
trdi disk deluje 100%
[7, 4, 2, 39, 6, 16, 51, 30, 42]
Upoštevajte, da seznam še vedno ni razvrščen, vendar so postavke bližje položajem, na katerih bi morali biti. Po razvrščanju vstavljanja na tej kombinaciji seznamov bo seznam končno razvrščen:
[2, 4, 6, 7, 16, 30, 39, 42, 51]
Algoritemska analiza
Kompleksnost razvrščanja lupin je med O (n) in O (n2). Izračun tega zaključka presega obseg tega članka.
Najdi moj iPhone prikazuje staro lokacijo
Izvajanje Pythona:
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
Prehod na združitev Razvrsti
Obstaja več algoritmov za razvrščanje, od katerih ima vsak svoje edinstveno delovanje. Razvrstitev združevanja na primer uporablja strategijo loči in osvoji ter ima kompleksnost O (nlogn).
Razvrstitev združevanja je v nekaterih primerih boljša od razvrščanja lupin in je vsekakor vredna ogleda. Naslednji bi moral biti na vašem seznamu bralnih algoritmov.
Deliti Deliti Cvrkutati E-naslov Uvod v algoritem razvrščanja za združevanjePreučujete podatkovne strukture in algoritme? Naučite se povsem novega načina razvrščanja matrike z razvrščanjem Merge.
Preberite Naprej Sorodne teme- Programiranje
- Programiranje
- Python
Jerome je osebni pisatelj pri MakeUseOf. Zajema članke o programiranju in Linuxu. Je tudi navdušenec nad kripto kripto in vedno spremlja kripto industrijo.
Več od Jeroma DavidsonaNaročite se na naše novice
Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e -knjige in ekskluzivne ponudbe!
Kliknite tukaj, če se želite naročiti