-
Notifications
You must be signed in to change notification settings - Fork 2
/
GnomeSort.java
29 lines (26 loc) · 931 Bytes
/
GnomeSort.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package sort;
public class GnomeSort {
/**
* Implementace algoritmu gnome sort.
* @param input vstupní pole
* @author Vojtěch Hordějčuk
*/
public static <T extends Comparable<? super T>> void gnomeSort(final T[] input) {
int gnomePosition = 1;
while (gnomePosition < input.length) {
if (input[gnomePosition - 1].compareTo(input[gnomePosition]) <= 0) {
// správné pořadí, posun dopředu
gnomePosition++;
} else {
// špatné pořadí, prohodit prvky, posun dozadu
final T tmp = input[gnomePosition - 1];
input[gnomePosition - 1] = input[gnomePosition];
input[gnomePosition] = tmp;
if (--gnomePosition == 0) {
// odrazit se od konce
gnomePosition = 1;
}
}
}
}
}