From 0607bf9b474708e3f787471f6221990cd6648b90 Mon Sep 17 00:00:00 2001 From: JadenLeake333 <47929127+JadenLeake333@users.noreply.github.com> Date: Sat, 30 Oct 2021 04:39:37 -0400 Subject: [PATCH] Add Odd-Even Sort (#2765) --- Sorts/OddEvenSort.java | 67 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 Sorts/OddEvenSort.java diff --git a/Sorts/OddEvenSort.java b/Sorts/OddEvenSort.java new file mode 100644 index 000000000..160746c15 --- /dev/null +++ b/Sorts/OddEvenSort.java @@ -0,0 +1,67 @@ +package Sorts; + +import java.util.Random; + +// https://en.wikipedia.org/wiki/Odd%E2%80%93even_sort +public class OddEvenSort { + + public static void main(String[] args) { + int[] arr = new int[100]; + + Random random = new Random(); + + // Print out unsorted elements + for (int i = 0; i < arr.length; ++i) { + arr[i] = random.nextInt(100) - 50; + System.out.println(arr[i]); + } + System.out.println("--------------"); + + oddEvenSort(arr); + + //Print Sorted elements + for (int i = 0; i < arr.length - 1; ++i) { + System.out.println(arr[i]); + assert arr[i] <= arr[i + 1]; + } + } + + /** + * Odd Even Sort algorithms implements + * + * @param arr the array contains elements + */ + public static void oddEvenSort(int[] arr) { + boolean sorted = false; + while(!sorted) { + sorted = true; + + for(int i = 1; i < arr.length-1; i += 2){ + if (arr[i] > arr [i + 1]){ + swap(arr, i, i+1); + sorted = false; + } + } + + for (int i = 0; i < arr.length - 1; i+= 2){ + if( arr[i] > arr[i + 1] ){ + swap(arr, i, i+1); + sorted = false; + } + } + } + } + + /** + * Helper function to swap two array values. + * + * @param arr the array contains elements + * @param i the first index to be swapped + * @param j the second index to be swapped + */ + private static void swap(int[] arr, int i, int j) { + int temp = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; + } +} \ No newline at end of file