Ugrás a tartalomhoz

Shellsort algorithm

A Wikiszótárból, a nyitott szótárból
(Shellsort szócikkből átirányítva)


Főnév

Shellsort algorithm (tsz. Shellsort algorithms)

  1. (informatika) Shellsort egy rendezőalgoritmus, amely Don Shell nevéhez fűződik (1959). A beillesztéses rendezés (Insertion Sort) továbbfejlesztése: tetszőleges távolságú (gap-beli) elemeket “csomagokba” gyűjt és elő­rendez, így a tényleges beillesztéses rendezés már viszonylag kis tologatásokkal dolgozik, gyorsabban konvergálva.



1. Algoritmus vázlata

  1. Gap-sorozat választása: egy csökkenő sorozat, például .
  2. Minden gap-értékre () végrehajtunk egy -lépéses beillesztéses rendezést:
    • Vegyük sorra az indexeket .
    • Az elemet „kikapjuk”, és „előrébb” tologatjuk a már -részekre bontott szekvenciában, amíg a megfelelő helyre nem kerül.
  3. Végül gap = 1-nél a hagyományos Insertion Sort fut, de az adatsor már közel rendezett, így gyors.
ShellSort(A[0..n-1]):  
  gaps = gap_sequence(n)       // pl. n/2, n/4, …, 1
  for each h in gaps:          
    for i = h to n-1:
      temp = A[i]
      j = i
      while j ≥ h and A[j-h] > temp:
        A[j] = A[j-h]
        j = j - h
      A[j] = temp

2. Gap-sorozatok

A teljesítmény leginkább a gap-sorozattól függ:

Sorozat Jellemző futásidő
Shell eredeti:
Hibbard:
Pratt:
Sedgewick vagy jobb
Tokuda, Ciura stb. gyakorlati leggyorsabb

A leggyakrabban használt gyakorlatban a Ciura-sorozat (1, 4, 10, 23, 57, 132, …) kiváló eredményeket ad.



3. Teljesítmény és jellemzők

  • Átlagos futásidő: gap-sorozattól függően és körül.
  • Legrosszabb eset: általában , de megfelelő gap-sorozattal lejjebb szorítható.
  • További előnyök:
    • In-place: nem igényel extra memóriát.
    • Stabilitás: nem stabil (azonos értékek sorrendje változhat).
    • Egyszerű implementáció és jó gyakorlati sebesség közepes méretű tömbökön.



4. Mikor érdemes használni?

  • Közepes méretű tömbök rendezésére (nagy -re már mergesort vagy heapsort jobb).
  • Ha memória-korlátozott környezetben in-place, stabilitás nélkül.
  • Beágyazott rendszerekben, ahol egyszerű kódra és kis helyigényre van szükség.



Összefoglaló

A Shellsort egy intelligens beillesztéses rendezés gap-beli elő­rendezéssel, amely tetszőleges gap-sorozatokkal testre szabható, és gyakorlati alkalmazásokban—kis- és közepes méretekben—kiemelkedő hatékonyságot nyújt.