public class QuickSort { private final int[] arr; QuickSort(int[] arr) { this.arr = arr; } public void sort() { sort(0, arr.length - 1); System.out.println(count); } static int count = 0; private void sort(int p, int q) { count++; int pivot = partition(p, q); if (pivot - 1 > p) sort(p, pivot - 1); if (pivot + 1 < q) sort(pivot + 1, q); } private int partition(int p, int q) { int x = arr[p]; int i = p + 1; int j = q; while (i <= j) { if (arr[i] < x) i++; else if (arr[j] > x) j--; else if (arr[i] > x && arr[j] < x) swap(i++, j--); } swap(p, i - 1); return i - 1; } private void swap(int i, int j) { int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } }
Tuesday, 9 May 2017
Quick Sort
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment