Ř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.
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ě).