Azərbaycan  AzərbaycanDeutschland  DeutschlandLietuva  LietuvaMalta  Maltaශ්‍රී ලංකාව  ශ්‍රී ලංකාවTürkmenistan  TürkmenistanTürkiyə  TürkiyəУкраина  Украина
Pagalba
www.datawiki.lt-lt.nina.az
  • Pradžia

AlgoritmasTipas Rikiavimo algoritmaiPavadinimas Šelo Shell Sort Sudėtingumas Vidutinis o N1 2 blogiausias O N Greitos nu

Šelo rikiavimo algoritmas

  • Pagrindinis puslapis
  • Šelo rikiavimo algoritmas
Šelo rikiavimo algoritmas
www.datawiki.lt-lt.nina.azhttps://www.datawiki.lt-lt.nina.az
Algoritmas
Tipas Rikiavimo algoritmai
Pavadinimas Šelo (Shell Sort)
Sudėtingumas Vidutinis - o(N1,2); blogiausias - O(N²)
Greitos nuorodos
  • Algoritmai
    • Rikiavimo algoritmai
      • Šelo
  • Šablonas

Šelo algoritmas (angl. shellsort) – vienas iš seniausiai naudojamų rikiavimo algoritmų (sukurtas 1959 ), vienodai efektyviai dirbantis, nepriklausomai nuo duomenų ypatumų, taigi tinkamas tais atvejais, kai šie ypatumai nėra žinomi.

Šelo algoritmas gali būti nagrinėjamas kaip burbulo rikiavimo arba įterpimo metodo bendrasis atvejis.

Duomenų seka interpretuojama kaip h-surikiuota (nuo bet kurios vietos imant kiekvieną h-ąjį elementą, gaunamas surikiuotas posekis). Algoritmo vykdymo efektyvumas priklauso nuo skaičiaus h kitimo dėsnio parinkimo ir nuo duomenų sekos.

Esant h kitimo dėsniui 3·h+1 (1, 4, 13, 40, 121, ..), algoritmui reikia ne daugiau nei N3/2 lyginimų.

Šelo ir burbuliuko metodų palyginimas

Šelo rikiavimo algoritmas išsprendžia vieną iš problemų, kylančių naudojant burbuliuko metodą, t. y.: didelės reikšmės greitai juda į savo vietas, o mažos - lėtai. Tai rikiavimo keitimu (exchange sort) metodas, kur atliekamos serijos palyginimų ir keitimų. Tarp lyginamų elementų yra fiksuotas atstumas („gap“). Pradinis atstumas dažniausiai imamas lygus pusei masyvo elementų. Kai su einamuoju atstumu nebeatliekama daugiau pakeitimų, jis mažinamas per pusę. Šis procesas tęsiamas, kol atstumas pasidaro 1 ir nebepakeičiama nė viena pora elementų.

Šelo rikiavimo algoritmas (pseudokodas)

nustatyti pradinį Atstumą lygų pusei rikiuojamo masyvo elementų REPEAT REPEAT FOR elementams nuo pirmo iki elementų skaičius minus Atstumas DO IF einamasis ir elementas nutolęs einamuoju atstumu yra bloga tvarka THEN sukeisti juos vietomis UNTIL nebuvo atlikta pakeitimų sumažinti Atstumą dvigubai UNTIL Atstumas yra mažesnis už 1 

Iš esmės Šelo metodas atlieka rikiavimą burbuliuko metodu ir lygina elementus nutolusius einamuoju atstumu, kol atliekamas burbuliuko rikiavimas su žingsniu 1. Šelo metodas efektyvesnis už surikiuotą paieška (selection sort), burbuliuko ir rikiavimo įterpimu (insertion sort) metodus atsitiktiniams masyvams, ypač, jei jie dideli. Mažiems masyvas efektyvumas neišryškėja. Šelo metodo tikėtinas sudėtingumas yra O(N1.2), kas yra žymiai geriau už O(N²). Pavyzdžiui, jei N yra 128, tai O(N1.2)=337.8, o O(N²)=16384. Taigi kuo didesnis masyvas rikiuojamas, tuo Šelo metodas efektyvesnis už burbuliuko (1000 elementų masyvui apie 10 kartų).

Pavyzdys

Tarkime, kad turime duomenų seką, kurią reikia surikiuoti:

3 7 9 0 5 1 6 8 4 2 0 6 1 5 7 3 4 9 8 2

Pirmiausiai įsivaizduojame, kad tai lentelė su 7 stulpeliais, tada kiekvieną stulpelį atskirai surikiuojame:

3 7 9 0 5 1 6 3 3 2 0 5 1 5 8 4 2 0 6 1 5 -> 7 4 4 0 6 1 6 7 3 4 9 8 2 8 7 9 9 8 2 

Kitame žingsnyje žiūrime į duomenis kaip į tris stulpelius, kuriuos vėl atskirai surikiuojame:

3 3 2 0 0 1 0 5 1 1 2 2 5 7 4 3 3 4 4 0 6 -> 4 5 6 1 6 8 5 6 8 7 9 9 7 7 9 8 2 8 9 

Po šio žingsnio seka beveik pilnai surikiuota, taigi rikiuojant seką kaip vieną stulpelį, tik tris elementus (6, 8, 9) reikia šiek tiek perkelti.

Realizacija Java kalba:

void shellsort (int[] a, int n) {  int i, j, k, h, t;  int[] stulp = { 1,3,7,31,92,259,815,1968,4711,11969,27901,84801,  213331,543749,1355339,3501671,8810089,21521774,  58548857,157840433,410151271,1131376761,2147483647 };  for (k=0; stulp[k]<n; k++);  while (--k >= 0)  { h=stulp[k];  for (i=h; i<n; i++)  { t=a[i];  j=i;  while (j>=h && a[j-h]>t)  { a[j]=a[j-h];  j=j-h;  }  a[j]=t;  }  } } 

Šaltiniai

  1. Knuth, Donald E. (1997). „Shell's method“. The Art of Computer Programming. Volume 3: Sorting and Searching (2nd leid.). Reading, Massachusetts: Addison-Wesley. pp. 83–95. ISBN 978-0-201-89685-5.


   Šiame straipsnyje naudojami diskutuotini terminai.
Daugiau apie kompiuterinius terminus skaitykite žodynėlyje.

Autorius: www.NiNa.Az

Išleidimo data: 26 Lie, 2025 / 06:26

vikipedija, wiki, lietuvos, knyga, knygos, biblioteka, straipsnis, skaityti, atsisiųsti, nemokamai atsisiųsti, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, pictu, mobilusis, porn, telefonas, android, iOS, apple, mobile telefl, samsung, iPhone, xiomi, xiaomi, redmi, pornografija, honor, oppo, Nokia, Sonya, mi, pc, web, kompiuteris, Informacija apie Šelo rikiavimo algoritmas, Kas yra Šelo rikiavimo algoritmas? Ką reiškia Šelo rikiavimo algoritmas?

AlgoritmasTipas Rikiavimo algoritmaiPavadinimas Selo Shell Sort Sudetingumas Vidutinis o N1 2 blogiausias O N Greitos nuorodos Algoritmai Rikiavimo algoritmai Selo Sablonas Selo algoritmas angl shellsort vienas is seniausiai naudojamu rikiavimo algoritmu sukurtas 1959 vienodai efektyviai dirbantis nepriklausomai nuo duomenu ypatumu taigi tinkamas tais atvejais kai sie ypatumai nera zinomi Selo rikiavimo algoritmas spalvu juostos Selo algoritmas gali buti nagrinejamas kaip burbulo rikiavimo arba įterpimo metodo bendrasis atvejis Duomenu seka interpretuojama kaip h surikiuota nuo bet kurios vietos imant kiekviena h ajį elementa gaunamas surikiuotas posekis Algoritmo vykdymo efektyvumas priklauso nuo skaiciaus h kitimo desnio parinkimo ir nuo duomenu sekos Esant h kitimo desniui 3 h 1 1 4 13 40 121 algoritmui reikia ne daugiau nei N3 2 lyginimu Selo ir burbuliuko metodu palyginimasSelo rikiavimo algoritmas issprendzia viena is problemu kylanciu naudojant burbuliuko metoda t y dideles reiksmes greitai juda į savo vietas o mazos letai Tai rikiavimo keitimu exchange sort metodas kur atliekamos serijos palyginimu ir keitimu Tarp lyginamu elementu yra fiksuotas atstumas gap Pradinis atstumas dazniausiai imamas lygus pusei masyvo elementu Kai su einamuoju atstumu nebeatliekama daugiau pakeitimu jis mazinamas per puse Sis procesas tesiamas kol atstumas pasidaro 1 ir nebepakeiciama ne viena pora elementu Selo rikiavimo algoritmas pseudokodas nustatyti pradinį Atstuma lygu pusei rikiuojamo masyvo elementu REPEAT REPEAT FOR elementams nuo pirmo iki elementu skaicius minus Atstumas DO IF einamasis ir elementas nutoles einamuoju atstumu yra bloga tvarka THEN sukeisti juos vietomis UNTIL nebuvo atlikta pakeitimu sumazinti Atstuma dvigubai UNTIL Atstumas yra mazesnis uz 1 Is esmes Selo metodas atlieka rikiavima burbuliuko metodu ir lygina elementus nutolusius einamuoju atstumu kol atliekamas burbuliuko rikiavimas su zingsniu 1 Selo metodas efektyvesnis uz surikiuota paieska selection sort burbuliuko ir rikiavimo įterpimu insertion sort metodus atsitiktiniams masyvams ypac jei jie dideli Maziems masyvas efektyvumas neisryskeja Selo metodo tiketinas sudetingumas yra O N1 2 kas yra zymiai geriau uz O N Pavyzdziui jei N yra 128 tai O N1 2 337 8 o O N 16384 Taigi kuo didesnis masyvas rikiuojamas tuo Selo metodas efektyvesnis uz burbuliuko 1000 elementu masyvui apie 10 kartu PavyzdysTarkime kad turime duomenu seka kuria reikia surikiuoti 3 7 9 0 5 1 6 8 4 2 0 6 1 5 7 3 4 9 8 2 Pirmiausiai įsivaizduojame kad tai lentele su 7 stulpeliais tada kiekviena stulpelį atskirai surikiuojame 3 7 9 0 5 1 6 3 3 2 0 5 1 5 8 4 2 0 6 1 5 gt 7 4 4 0 6 1 6 7 3 4 9 8 2 8 7 9 9 8 2 Kitame zingsnyje ziurime į duomenis kaip į tris stulpelius kuriuos vel atskirai surikiuojame 3 3 2 0 0 1 0 5 1 1 2 2 5 7 4 3 3 4 4 0 6 gt 4 5 6 1 6 8 5 6 8 7 9 9 7 7 9 8 2 8 9 Po sio zingsnio seka beveik pilnai surikiuota taigi rikiuojant seka kaip viena stulpelį tik tris elementus 6 8 9 reikia siek tiek perkelti Realizacija Java kalba void shellsort int a int n int i j k h t int stulp 1 3 7 31 92 259 815 1968 4711 11969 27901 84801 213331 543749 1355339 3501671 8810089 21521774 58548857 157840433 410151271 1131376761 2147483647 for k 0 stulp k lt n k while k gt 0 h stulp k for i h i lt n i t a i j i while j gt h amp amp a j h gt t a j a j h j j h a j t SaltiniaiKnuth Donald E 1997 Shell s method The Art of Computer Programming Volume 3 Sorting and Searching 2nd leid Reading Massachusetts Addison Wesley pp 83 95 ISBN 978 0 201 89685 5 Siame straipsnyje naudojami diskutuotini terminai Daugiau apie kompiuterinius terminus skaitykite zodynelyje

Naujausi straipsniai
  • Liepa 29, 2025

    Lemingtonas

  • Liepa 28, 2025

    Lemkaraistis

  • Liepa 29, 2025

    Lelerviškiai

  • Liepa 28, 2025

    Leipalingio žydų senosios kapinės

  • Liepa 28, 2025

    Leipalingio herbas

www.NiNa.Az - Studija

    Susisiekite
    Kalbos
    Susisiekite su mumis
    DMCA Sitemap
    © 2019 nina.az - Visos teisės saugomos.
    Autorių teisės: Dadash Mammadov
    Nemokama svetainė, kurioje galima dalytis duomenimis ir failais iš viso pasaulio.
    Viršuje