diff --git a/Java/Odd_Even_Sort.java b/Java/Odd_Even_Sort.java new file mode 100644 index 0000000..35cc982 --- /dev/null +++ b/Java/Odd_Even_Sort.java @@ -0,0 +1,29 @@ +public class OddEvenSort { + public static > void sort(T[] array) { + boolean sorted = false; + while (!sorted) { + sorted = innerSort(array, 1); + sorted = innerSort(array, 0) && sorted; + } + } + + private static > boolean innerSort(T[] array, Integer i) { + boolean sorted = true; + for (; i < array.length - 1; i += 2) + { + if (array[i].compareTo(array[i + 1]) > 0) + { + swap(array, i, i + 1); + sorted = false; + } + } + return sorted; + } + + private static > void swap( + T[] array, int a, int b) { + T temp = array[a]; + array[a] = array[b]; + array[b] = temp; + } +} \ No newline at end of file