/**
*
* @param list
* @param begin开始位置 0
* @param end 结束为止 长度-1
*/
public static void FastSort(int[] list,int begin,int end) {
//终止条件
if (begin>end) {
return ;
}
int i=begin;
int j=end;
//获得当前基数 也就是第一个数字
int num=list[begin];
//如果两边不相遇
while(i!=j) {
//左边j下标对应的数字 大于基数 正常 向前移 如果遇到比基数还小的说明为有问题 跳出循环
while (list[j]>=num&&i<j) {
j--;
}
//右边i下标对应的数字 小于基数 正常 向后移 如果遇到比基数还大的说明为有问题 跳出循环
while (list[i]<=num&&i<j) {
i++;
}
//此时j和i对应的数字都是排序不对的 list[j]<num 和list[i]>num 进行调换位置
//j>i 防止
if(j>i) {
int temp=list[i];
list[i]=list[j];
list[j]=temp;
}
}
list[begin]=list[j];
list[j]=num;
FastSort(list, begin, i-1);
FastSort(list, i+1, end);
return ;
}
快速排序简单代码
最新推荐文章于 2024-07-10 07:13:13 发布