Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Leszámoló rendezés Készítette: Várkonyi Tibor Zoltán VATNABI.ELTE mocman[kukac]inf[pont]elte[pont]hu.

Hasonló előadás


Az előadások a következő témára: "Leszámoló rendezés Készítette: Várkonyi Tibor Zoltán VATNABI.ELTE mocman[kukac]inf[pont]elte[pont]hu."— Előadás másolata:

1 Leszámoló rendezés Készítette: Várkonyi Tibor Zoltán VATNABI.ELTE mocman[kukac]inf[pont]elte[pont]hu

2 Szétosztva leszámoló rendezés Előnyei: Gyors Lineáris végrehajtási idejű Nem használ elágazásokat Hátrányai: Nem helyben rendező algoritmus Ezért nagy tárterületet igényel (2× vektor hossza+ vektor értékkészlete számú egész) Csak megszámlálható típusokkal működik (pl. int, char)* *: Egy jó hash függvénnyel adható az értékekhez int-re való leképezés

3 Struktogram J=1 while J<=N SZ[K[J]]:=SZ[K[J]]+1 J:=J+1 I:=U+1 while I<=V SZ[I]:=SZ[I]+SZ(I-1) I:=I+1 J:=N while J>=1 I:=SZ[K[J]] S[I]:=K[J] SZ[K[J]]:=SZ[K[J]]-1 J:=J-1 N: A rendezendő elemek száma U,V: Az elemek értékhatárai (min,max) K: vektor(1..N) – a rendezendő elemek S: vektor(1..N) – az eredmény vektora SZ: vektor(U..V) – segédvektor az egyes elemek számának meghatározására I,J: Ciklusváltozók

4 Működés 1. Legyen egy tömbünk a rendezni kívánt elemekkel N=5 U=1 V=8 K: SZ: Számláló ciklus Index-átszámoló ciklus 4. Eredmény olvasás ????? Algoritmus vége

5 Alkalmazás I. Példa: egy 1024×1024 méretű digitális kép pontjai 0 és 255 közötti értékeket vehetnek fel. Rendezzük az értékeket egy 2 20 méretű tömbben! A feladat C++ nyelven megírt megoldása a következő oldalon található

6 Alkalmazás II. int main(int argc, char *argv[]) { int n=1024*1024; int v=256; int k[n]; int s[n]; int sz[v]; int i, j; for (i=0;i=0;--j) { i=sz[k[j]]-1; s[i]=k[j]; sz[k[j]]=sz[k[j]]-1; } return 0; }

7 Vége


Letölteni ppt "Leszámoló rendezés Készítette: Várkonyi Tibor Zoltán VATNABI.ELTE mocman[kukac]inf[pont]elte[pont]hu."

Hasonló előadás


Google Hirdetések