Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

OSNOVA: a) Algoritmy třídění b) Třídění dynamických záznamů Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 1 pro obor EST.

Podobné prezentace


Prezentace na téma: "OSNOVA: a) Algoritmy třídění b) Třídění dynamických záznamů Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 1 pro obor EST."— Transkript prezentace:

1 OSNOVA: a) Algoritmy třídění b) Třídění dynamických záznamů Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 1 pro obor EST BPC1E PŘEDNÁŠKA 12

2 Algoritmy třídění (1/10) Z pole se vybere nejmenší prvek a prohodí se s prvním (index 0). Pak se hledá nejmenší prvek od indexu 1 a prohodí se s druhým prvkem na indexu 1. Pak se hledá nejmenší prvek od indexu 2 a prohodí se s třetím prvkem na indexu 2. atd. SELECTSORT – princip pro vzestupné třídění Základem algoritmu je hledání minima (maxima pro sestupné třídění) postupně vždy o jedno zkrácení tříděného vektoru zleva.

3 Algoritmy třídění (2/10) SELECTSORT – algoritmus v C for(i=0; i<(N-1); i++) { k=i; minim=vect[i]; for(j=i+1; j<N; j++) if(vect[j]<minim) { k=j; minim=vect[j]; } vect[k]=vect[i]; vect[i]=minim; } Počet prvků je N Tříděný vektor je vect[]

4 Algoritmy třídění (3/10) Příklad postupu třídění SELECTSORT pro 20 prvků celých čísel Příklad: BPC1E_Ex85.c

5 Algoritmy třídění (4/10) Postupně se vybírají prvky kromě prvního (tedy od druhého dále) a vkládají se na pozice podle hodnoty, zbytek pole se posouvá (jako třídění karet hráčem při rozdávání). INSERTSORT – princip pro vzestupné třídění

6 Algoritmy třídění (5/10) INSERTSORT – algoritmus v C for(i=2; i<=N; i++) { vect[0]=vect[i]; j=i-1; while(vect[0]<vect[j]) { vect[j+1]=vect[j]; j--; } vect[j+1]=vect[0]; } Počet prvků je N Tříděný vektor je vect[] od pozice 1 až po N, pozice vect[0] je určena pro tříděnou hodnotu

7 Algoritmy třídění (6/10) Příklad postupu třídění INSERTSORT pro 20 prvků celých čísel Příklad: BPC1E_Ex86.c

8 Algoritmy třídění (7/10) Postupně se kontrolují a případně prohazují dva sousední prvky, musí být provedeno N-1 krát. BUBLESORT – princip pro vzestupné třídění

9 Algoritmy třídění (8/10) BUBLESORT – algoritmus v C for(i=0; i<(N-1); i++) for(j=0; j<(N-1); j++) { if(vect[j]>vect[j+1]) { aux=vect[j]; vect[j]=vect[j+1]; vect[j+1]=aux; } Počet prvků je N Tříděný vektor je vect[]

10 Algoritmy třídění (9/10) Příklad postupu třídění BUBLESORT pro 20 prvků celých čísel Příklad: BPC1E_Ex87.c

11 Algoritmy třídění (10/10) MODIFIKOVANÝ BUBLESORT for(i=0; i<(N-1); i++) { test=0; for(j=0; j<(N-1); j++) { if(vect[j]>vect[j+1]) { aux=vect[j]; vect[j]=vect[j+1]; vect[j+1]=aux; test=1; } if(!test) break; } Při průchodu vektorem se testuje, zda došlo k prohození, pokud nedošlo, algoritmus se ukončí. Příklad: BPC1E_Ex88.c

12 Třídění dynamických záznamů (1/2) MODIFIKOVANÝ BUBLESORT PRO SETŘÍDĚNÍ LINEÁRNÍHO SEZNAMU Př. Sestavte algoritmus, který setřídí lineární neuspořádaný seznam dynamicky vytvořených záznamů. Struktura záznamu reprezentuje skokana do dálky s položkami jméno name a délka skoku jump. Aplikujte modifikovaný bublesort, který setřídí (uspořádá) lineární seznam podle dosažené délky skoku závodníka.

13 Třídění dynamických záznamů (2/2) Algoritmus třídění záznamů lineárního neuspořádaného seznamu: Vyřešená aplikace bude na webu k dispozici od 13.12. jako BPC1E_Ex89sol.c Společné programování Příklad: BPC1E_Ex89.c

14 Téma následující přednášky DĚKUJI ZA POZORNOST – Rozbor zápočtového testu


Stáhnout ppt "OSNOVA: a) Algoritmy třídění b) Třídění dynamických záznamů Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 1 pro obor EST."

Podobné prezentace


Reklamy Google