Selection sort
Vzhľad
Tomuto článku alebo sekcii chýbajú odkazy na spoľahlivé zdroje, môže preto obsahovať informácie, ktoré je potrebné ešte overiť. Pomôžte Wikipédii a doplňte do článku citácie, odkazy na spoľahlivé zdroje. |
Selection sort je jednoduchý nestabilný triediaci algoritmus so zložitosťou O(n^2). V porovnaní s ďalšími kvadratickými algoritmami je selection sort všeobecne rýchlejší než bubble sort, avšak pomalší než insertion sort. Výhodou selection sortu oproti algoritmom s asymptotickou zložitosťou O(n * log n) (quick sort, merge sort, heap sort) je jeho konštantná pamäťová zložitosť.
Algoritmus
[upraviť | upraviť zdroj]Kódy algoritmov v rôznych jazykoch:
Java
[upraviť | upraviť zdroj]public static void selectionSort(int[] array) { for (int i = 0; i < array.length - 1; i++) { int maxIndex = i; for (int j = i + 1; j < array.length; j++) { if (array[j] < array[maxIndex]) maxIndex = j; } int tmp = array[i]; array[i] = array[maxIndex]; array[maxIndex] = tmp; } }
C++
[upraviť | upraviť zdroj]void selectionSort(int array[], int size) { for (int i = 0; i < size - 1; i++) { int maxIndex = i; for (int j = i + 1; j < size; j++) { if (array[j] < array[maxIndex]) maxIndex = j; } int tmp = array[i]; array[i] = array[maxIndex]; array[maxIndex] = tmp; } }
C#
[upraviť | upraviť zdroj]public static void SelectionSort(int[] array) { for (int i = 0; i < array.Length - 1; i++) { int maxIndex = i; for (int j = i + 1; j < array.Length; j++) { if (array[j] < array[maxIndex]) maxIndex = j; } int tmp = array[i]; array[i] = array[maxIndex]; array[maxIndex] = tmp; } }
Pascal
[upraviť | upraviť zdroj]procedure SelectSort(var X : ArrayType; N : integer); var I, J, K, Y : integer; begin for I := 1 to N - 1 do begin K := I; Y := X[I]; for J := I + 1 to N do if X[J] < Y then begin K := J; Y := X[J] end; X[K] := X[J]; X[I] := Y; end end;