Úloha 6.8
Napíšte program, zdrojový kód, v jazyku C použitím štandardu C17, ktorý zoradí hodnoty staticky definovaného pola typu
int[]
od najmenšej hodnoty po najväčšiu. Elementy poľa sú zoraďované v definovanom poli, nevytvárajte nové pole.
Po zoradení program vypíše postupne všetky elementy poľa za sebou v jednom riadku.
Tip
Pre prehodenie dvoch čísel je potrebná tretia pomocná premenná.
Príklady vstupov / výstupov programu
Pre pole [9,8,5,1,3] program vypíše:
1, 3, 5, 8, 9Pomôcka
Skúste najprv prísť na implementáciu bez tejto pomoci. Ak by ste sa však nevedeli pohnúť obrázok na tomto odkaze opisuje algoritmus zoradenia.
Rozbaľ pre ukážku riešenia
#include <stdio.h>
int main() {
// Definícia a inicializácia statického poľa
int array[] = {34, 7, 23, 32, 5, 62};
int size = sizeof(array) / sizeof(array[0]); // Veľkosť poľa
// Bubble sort na zoradenie poľa
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (array[j] > array[j + 1]) {
// Výmenná operácia
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
// Výpis zoradeného poľa
printf("Sorted array: ");
for (int i = 0; i < size; i++) {
printf("%d ", array[i]);
}
printf("\n");
return 0;
}Vysvetlenie
Definícia poľa:
- Pole array[] je inicializované s ľubovoľnými hodnotami, napr. {34, 7, 23, 32, 5, 62}.
Výpočet veľkosti poľa:
- sizeof(array) určuje veľkosť poľa v bajtoch.
- sizeof(array[0]) určuje veľkosť jedného prvku poľa.
- Veľkosť poľa je teda size = sizeof(array) / sizeof(array[0]).
Bubble sort algoritmus:
- Dvojitý cyklus iteruje cez pole.
- Ak je aktuálny prvok väčší ako nasledujúci, hodnoty sa vymenia.
- Tento proces sa opakuje, až kým pole nie je zoradené.
Výpis poľa:
- Po zoradení sa prvky poľa vypisujú v jednom riadku oddelené medzerami.
Príklad výstupu
Pri inicializácii poľa int array[] = {34, 7, 23, 32, 5, 62}; bude výstup:
Sorted array: 5 7 23 32 34 62