//划分函数 O(log(n))
public int position(int[] array, int left, int right) {
int i = left, j = right + 1;
int pivot = array[left];
do {
do {
i++;
} while (array[i] < pivot);
do {
j--;
} while (array[j] > pivot);
if (i < j)
swap(i, j, array);
} while (i < j);
swap(left, j, array);
return j;
}
public void swap(int i, int j, int[] array) {
int temp;
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
//快速排序 O(n*log(n))
public void quickSort(int[] array, int left, int right) {
int k;
if (left < right) {
k = position(array, left, right);
quickSort(array, left, k - 1);
quickSort(array, k + 1, right);
}
}
public void quickSortStart(int[] array) {
quickSort(array, 0, array.length - 1);
}
快速排序
最新推荐文章于 2024-07-17 10:35:12 发布