quick sort
程序员文章站
2024-01-05 17:22:58
...
/**
* 快速排序
*
* @param a
* 待排序的参数数组
* @param left
* 排序数组的起始索引
* @param right
* 排序数组的结束索引
*/
public void quickSort(int[] a, int left, int right) {
// 需要排序
if (left < right) {
// 临时变量
int temp = 0;
// 从左边开始搜索,搜索大于基数的索引
int i = left+1;
// 从右边开始搜索,搜索小于基数的索引
int j = right;
// 选择基数
int base = a[left];
// 当交错时停止循环
while(i<j) {
// 从左边开始找出比基数大的数
while (i <= right && a[i] < base)i++;
// 从右边开始找出比基数小的数
while (j > left && a[j] > base)j--;
// 交换值
if (i < j) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
//这时j的值为小于等于基数,i的值大于等于基数
{
temp = a[j];
a[j] = a[left];
a[left] = temp;
}
//递归左子序列
quickSort(a, j+1, right);
//递归右子序列
quickSort(a, left, j-1);
}
}
上一篇: 详解Python在七牛云平台的应用(一)
下一篇: FastDFS的实现