Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilMariana Nováková
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
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.