BPC 1 E Potae a programovn 1 pro
BPC 1 E: Počítače a programování 1 pro obor EST PŘEDNÁŠKA 11 TÉMA a) Algoritmy třídění b) Třídění dynamických záznamů Prezentace vznikla za podpory projektu: Komplexní inovace studijních programů a zvyšování kvality výuky na FEKT VUT v Brně OP VK CZ. 1. 07/2. 2. 00/28. 0193
Algoritmy třídění (1/10) SELECTSORT – princip pro vzestupné třídění 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. 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.
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[]
Algoritmy třídění (3/10) Příklad postupu třídění SELECTSORT pro 20 prvků celých čísel Příklad: BPC 1 E_Ex 85. c
Algoritmy třídění (4/10) INSERTSORT – princip pro vzestupné třídění 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í).
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
Algoritmy třídění (6/10) Příklad postupu třídění INSERTSORT pro 20 prvků celých čísel Příklad: BPC 1 E_Ex 86. c
Algoritmy třídění (7/10) BUBLESORT – princip pro vzestupné třídění Postupně se kontrolují a případně prohazují dva sousední prvky, musí být provedeno N-1 krát.
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[]
Algoritmy třídění (9/10) Příklad postupu třídění BUBLESORT pro 20 prvků celých čísel Příklad: BPC 1 E_Ex 87. c
Algoritmy třídění (10/10) MODIFIKOVANÝ BUBLESORT Při průchodu vektorem se testuje, zda došlo k prohození, pokud nedošlo, algoritmus se ukončí. 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říklad: BPC 1 E_Ex 88. c
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.
Třídění dynamických záznamů (2/2) Algoritmus třídění záznamů lineárního neuspořádaného seznamu: Společné programování Příklad: BPC 1 E_Ex 89. c Vyřešená aplikace bude na webu k dispozici od 13. 12. 2017 jako BPC 1 E_Ex 89 sol. c
DĚKUJI ZA POZORNOST Téma následující přednášky – Rozbor zápočtového testu
- Slides: 14