diff --git a/Sorts/src/sort/GnomeSort.java b/Sorts/src/sort/GnomeSort.java new file mode 100644 index 00000000..14af67c6 --- /dev/null +++ b/Sorts/src/sort/GnomeSort.java @@ -0,0 +1,44 @@ +package sort; + +import static sort.SortUtils.*; + +/** + * Implementation of gnome sort + * + * @author Podshivalov Nikita (https://github.com/nikitap492) + * @since 2018-04-10 + * + **/ +public class GnomeSort implements SortAlgorithm{ + + @Override + public > T[] sort(T[] arr) { + int i = 1; + int j = 2; + while (i < arr.length){ + if ( less(arr[i - 1], arr[i]) ) i = j++; + else { + swap(arr, i - 1, i); + if (--i == 0){ i = j++; } + } + } + + return null; + } + + public static void main(String[] args) { + Integer[] integers = { 4, 23, 6, 78, 1, 26, 11, 23 , 0, -6, 3, 54, 231, 9, 12 }; + String[] strings = {"c", "a", "e", "b","d", "dd","da","zz", "AA", "aa","aB","Hb", "Z"}; + GnomeSort gnomeSort = new GnomeSort(); + + gnomeSort.sort(integers); + gnomeSort.sort(strings); + + System.out.println("After sort : "); + print(integers); + print(strings); + + + } + +}