Jūs esaterikiavimas
rikiavimas
Kai Burbulai nusiburbuliuoja...
Jeigu programuojate ir Jums teko surikiuoti kokią vieną - kitą krūvelę skaičių, tad reikės pasirinkti kokį nors rikiavimo algoritmą.
Jeigu skaičių nedaug, tai nėra ko sukti galvos - pasiimam Burbulo rikiavimo algoritmą ir rikiuojame skaičiukus. Aišku, Burbulo rikiavimo algoritmo sudėtingumas yra О(n²), kas, kaip turbūt sutiksite, yra labai blogai. Bet, jei rikiuojame kokius 10 skaičių - tai ne problema.
Manęs paprašė, jog padėčiau išspręsti vieną programavimo uždavinį.
Laiko matavimas C++ kalboje
Funkcijos veikimo laiką C++ kalboje galima pasinaudojant clock() funkcija, kuri gyena ctime.h bibliotekoje:
clock_t start = clock();
//Veiksmai...
//
clock_t ends = clock();
cout << "Veikimo laikas: " << (double) (ends - start) / CLOCKS_PER_SEC << endl;
Visas šis gėris turėtų pateikti laiką. Problema tame, kad dabartiniai procesoriai labai greiti, taip kad naudos iš tokios funkcijos nedaug - bent jau GnomeSort rikiavimo atveju iš 10-ies skaičių...
Gnome Sort
Wikipedia'oje radau Gnome Sort algoritimą, kuris turėjo tik Python'o kalba parašytą metodą. Tad pridėjau aš ant JAVA tą patį metoduką.
void gnomeSort(int array[]) {
int n = 0;
int temp = 0;
while (n < array.length - 1) {
if (array[n] > array[n + 1]) {
temp = array[n];
array[n] = array[n + 1];
array[n + 1] = temp;
if (n > 0)
n--;
else
n++;
}
else
n++;
}
Plačiau apie šį rikiavimo metodą: http://en.wikipedia.org/wiki/Gnome_sort
