Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako spracováva algoritmus Quicksort s funkciou vizualizácie výberu prvku pivotu ako prvý v poli?

Rozobrame, ako algoritmus Quicksort s vizualizáciou spracováva výber pivotu, keď je vždy prvým prvkom v poli a ako môže fungovať vizualizácia.

Ako rýchleho výbežku s výberom prvého prvku funguje:

1. Výber piva: Algoritmus vždy vyberie prvok * prvého * v (sub) poli ako otočenie. Toto je kľúčový rozdiel od ostatných stratégií výberu čapov.

2. rozdelenie: Cieľom je usporiadať pole tak, aby:

* Všetky prvky * menšie ako alebo sa rovnajú * Pivot sú vľavo od čapu.

* Všetky prvky * väčšie ako * Pivot sú napravo od pivotu.

Tu je bežný prístup k rozdeleniu (pomocou dvoch ukazovateľov, `i` a` j`):

* `Začínam na prvku * po * Pivot (zvyčajne index 1).

* `j` začína na poslednom * prvku (sub) poľa.

* Slučka pokračuje tak dlho, ako `i <=j`:

* Prírastok `i`, kým nenájdete prvok` arr [i] `, ktorý je * väčší ako * pivot.

* Zníženie `j`, kým nenájdete prvok` arr [j] `, ktorý je * menší alebo rovný * Pivot.

* Ak `i * Ak `i> =j`, rozdelenie je dokončené. Vymeňte Pivot za `arr [j]`. Pivot je teraz v zoradenej polohe.

3. rekurzia: Algoritmus sa rekurzívne nazýva na dvoch podprúdoch:

* Podprúd do * ľavého * (teraz triedeného) čapu.

* Podprúd k * právu * (teraz triedený) otočného otočného otočného otočenia.

Príklad:

Povedzme, že máme pole:`[7, 2, 1, 6, 8, 5, 3, 4]`

1. Výber piva: Pivot =`7` (prvý prvok)

2. rozdelenie:

* Počiatočné:`[7, 2, 1, 6, 8, 5, 3, 4]`

* `Začínam o 2,` j` začína o 4.

* `Pohybujem sa, kým nenájde 8 (čo je> 7).

* `j` sa pohybuje, kým nenájde 4 (čo je <=7).

* Swap 8 a 4:`[7, 2, 1, 6, 4, 5, 3, 8]`

* `Pohybujem sa, kým nenájde 5.

* `j` sa pohybuje, kým nenájde 3.

* Swap 5 a 3:`[7, 2, 1, 6, 4, 3, 5, 8]`

* `Pohybujem sa, kým nenájde 5.

* `j` sa pohybuje, kým nenájde 3 (opäť).

* i> =j. Swap Pivot (7) s arr [j] (3):`[3, 2, 1, 6, 4, 7, 5, 8]`

* Pivot (7) je teraz v správnej polohe.

3. rekurzia:

* Quicksort sa volá `[3, 2, 1, 6, 4]`

* Quicksort sa volá `[5, 8]`

Vizualizačné úvahy:

Vizualizácia by musela ukázať:

* Zvýraznenie pivotu: Jasne uveďte, ktorý prvok je v súčasnosti vybraný ako pivot. Zmena farby alebo vizuálna etiketa je bežná.

* Pohyb ukazovateľa: Vizuálne zobrazte ukazovatele „I“ a `j`, ktoré sa pohybujú po celom poli. Používajte šípky, rôzne farby alebo iné ukazovatele.

* swaps: Animujte výmenu prvkov. Napríklad tieto dva prvky by sa mohli „presunúť“ do pozícií druhých.

* Proces rozdelenia: Zdôraznite, ako sa prvky usporiadajú okolo čapu. To by mohlo zahŕňať sfarbenie prvkov, o ktorých je známe, že sú menšie alebo väčšie ako pivot.

* RECULSIVE HOVORY: Ukážte, ako sa pole rozdeľuje na podprúdy a ako sa algoritmus aplikuje na každú rekurzívne sub-array. To sa dá dosiahnuť vizuálnym „hniezdením“ reprezentácií poľa. Možno použite rôzne pozadie pre každú úroveň rekurzie.

* Zoradené prvky: Uveďte, ktoré prvky boli umiestnené v ich konečných zoradených pozíciách. Použite zreteľnú farbu alebo vizuálnu značku.

* Postupné vykonanie: Umožnite užívateľovi prejsť algoritmom jeden krok za druhým, aby mohli jasne vidieť každú akciu.

* Informácie o stave: Zobraziť aktuálne hodnoty `i`,` j` a ďalších relevantných premenných.

Vizualizačné technológie:

* JavaScript &Html5 Canvas: Populárna voľba pre webové vizualizácie. Knižnice ako D3.js alebo p5.js môžu pomôcť s vizuálnymi prvkami.

* python (s knižnicami ako pygame alebo matplolib): Pre stolné aplikácie.

* Ostatné grafické knižnice: V závislosti od prostredia by sa mohli použiť ďalšie knižnice, ako je spracovanie, QT alebo OpenGL.

Problém s výberom čapu prvého prvku

Aj keď je jednoduchý na implementáciu, vždy výber prvého prvku, pretože Pivot má významnú nevýhodu:

* Najhorší scenár: Ak je pole už triedené (alebo takmer zoradené) v stúpajúcom alebo zostupnom poradí, algoritmus degeneruje na (n^2) časovú zložitosť. Dôvodom je skutočnosť, že každý oddiel odstráni iba * jeden * prvok z podprúdu, čo vedie k veľmi nevyváženým oddielom.

Príklad najhoršieho prípadu:

Ak je pole `[1, 2, 3, 4, 5] a 1 je vždy čap:

1. Pivot =1. Rozdelenie vedie k `[1, 2, 3, 4, 5]` (1 je na správnom mieste).

2. Rekurzívne triedte “[2, 3, 4, 5]`

3. Pivot =2. Rozdelenie vedie k `[2, 3, 4, 5]` (2 je na správnom mieste).

4. Rekurzívne triedte `[3, 4, 5]`

... a tak ďalej.

Algoritmus sa stáva v podstate veľmi neefektívnym výberom výberu.

Ako vizualizácia pomáha:

Vizualizácia jasne demonštruje toto najhoršie správanie. Uvidíte proces rozdelenia, ktorý trvá dlho, kým sa pohybuje prvky, a rekurzívne hovory vytvárajú veľmi nevyvážené podprúdy. To je veľmi zrejmé, prečo táto jednoduchá stratégia výberu otočného výberu nie je v praxi najlepšou voľbou. Vizualizácia môže tiež ukázať, ako sa môžu vyhnúť tomuto najhoršiemu scenáru aj ďalšie metódy výberu čapu (napríklad výber náhodného prvku).

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené