Úlohy na procivčování ke třetí hodině

Kdo nestihl BubbleSort, dodělá si

Řešení je ke stažení, zkuste si ho ale udělat nejdříve sami. Zadání: Nadeklarujte pole o nějakém počtu prvků typu int a do každé položky pole přiřaďte nějakou hodnotu. Dále napište program, který setřídí prvky v poli od nejmenšího k největšímu. Použijte Bubble sort. Setříděné pole vypište.

Nápověda: Udělejte dva cykly vnořené v sobě. Vnější cyklus se bude opakovat tak dlouho, dokud nebude pole setříděno, tj. až se pole projde a nebude třeba žádné prvky přemístit, máme setříděno. V těle tohoto vnějšího cyklu bude další, který bude procházet pole a prohazovat prvky vedle sebe, pokud levý bude větší než pravý. Nadeklarujte si dva pointery, které budou vždy na začátku ukazovat na první dvě položky pole a budou se postupně posunovat směrem ke konci. S každým posunutím zkontrolujete, zda je levý prvek menší nebo roven pravému, pokud ne, prvky prohodíte. Pozor na správné ukončení vnitřního cyklu, abyste skončili přesně na konci pole, nikoliv o jeden prvek před nebo jeden za.

Třídění s rekurzivním voláním funkce

Stejně jako v minulé úloze, setřiďte pole, do kterého si vložíte nějaké prvky typu int. Tentokrát napište funkci

void sort(int * start, int * end);

která dostane dva pointery - na začátek a na konec úseku integerů v poli, které je třeba setřídit. Třídění provede tak, že najde nejmenší prvek, který daný úsek obsahuje, a vymění ho s prvním prvkem úseku. Musí zkontrolovat, zda start a end náhodou neukazují na stejné místo, úsek obsahuje jen jeden prvek a fce se může hned vrátit. Pokud ne, zavolá sama sebe

sort(start+1, end);

což způsobí setřídění zbývajících prvků (první už je na správném místě).