//划分函数 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);
}
快速排序
最新推荐文章于 2023-12-01 23:14:38 发布
本文详细介绍了一种高效的排序算法——快速排序。通过递归地将数组分为较小和较大的两个子数组来实现排序,核心函数包括划分函数和快速排序函数。划分函数采用O(log(n))的时间复杂度,而快速排序的整体时间复杂度为O(n*log(n))。
摘要由CSDN通过智能技术生成