/**
*
* @Title: quickSort
* @Description: 快速排序
* @param left 最左边数位于数组中的索引
* @param right 最右边数位于数组中的索引
* @return void 返回类型
* @throws
*/
public static void quickSort(int left, int right) {
//退出条件为最左边索引大于右边,说明数组已排好序
if(left>right)
return;
int i = left;
int j = right;
int temp;
//基准数
int flag = num[i];
while(i!=j) {
//右边哨兵搜寻比基准数小的
while(i<j && num[j]>=flag)
j--;
//左边哨兵搜寻大的
while(i<j && num[i]<=flag)
i++;
//交换值
if(i<j) {
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
//基准数归位
temp = num[left];
num[left] = num[i];
num[i] = temp;
//左右两边递归再次进行,排序
quickSort(left, i-1);
quickSort(i+1, right);
}
快速排序
最新推荐文章于 2024-08-26 21:46:59 发布