From 5ded069031e2e4bdb8ccf02ee3551dee544d6f5e Mon Sep 17 00:00:00 2001 From: ianncarvalho Date: Wed, 3 Oct 2018 19:58:23 -0300 Subject: [PATCH] GnomeSort Java --- Sort/Java/CombSort.java | 44 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Sort/Java/CombSort.java diff --git a/Sort/Java/CombSort.java b/Sort/Java/CombSort.java new file mode 100644 index 0000000..ae71f50 --- /dev/null +++ b/Sort/Java/CombSort.java @@ -0,0 +1,44 @@ +public class CombSort { + + public static void main(String a[]) { + int[] arr1 = { 9, 14, 3, 2, 43, 11, 58, 22 }; + System.out.println("Before Sort"); + for (int i : arr1) { + System.out.print(i + " "); + } + System.out.println(); + + sort(arr1, 0, arr1.length-1);// sorting array using insertion sort + + System.out.println("After Sort"); + for (int i : arr1) { + System.out.print(i + " "); + } + } + + public static void sort(int[] array, int leftIndex, int rightIndex) { + if (array.length > 0 && leftIndex >= 0 && rightIndex < array.length && leftIndex < rightIndex) { + + double fator = 1.25; + int gap = (int) (rightIndex - leftIndex + 1 / fator); + + while (gap >= 1) { + for (int i = leftIndex; i + gap <= rightIndex; i++) { + if (array[i] > (array[i + gap])) { + swap(array, i, i + gap); + } + } + gap = (int) (gap / fator); + } + } + } + + public static void swap(int[] array, int i, int j) { + if (array == null) + throw new IllegalArgumentException(); + + int temp = array[i]; + array[i] = array[j]; + array[j] = temp; + } +}