快速排序
public class QuicklySort {
public static void main(String[] args) {
int[] arr={6,1,2,7,9,3,4,5,10,8};
quickSort(arr,0, arr.length-1);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
public static void quickSort(int arr[],int i,int j){
int start=i;
int end=j;
if(start>end){//递归的出口
return;
}
int baseNum=arr[i];
while (start!=end) {
while(true){
if(end<=start || arr[end]<baseNum){
break;
}
end--;
}
while(true){
if(end<=start || arr[start]>baseNum){
break;
}
start++;
}
int temp=arr[start];
arr[start]=arr[end];
arr[end]=temp;
}
int temp=arr[i];
arr[i]=arr[start];
arr[start]=temp;
//确定6左边的范围,重复;
quickSort(arr,i,start-1);
//确定6右边的范围,重复
quickSort(arr,start+1, j);
}
}
//从小到大先移动end,从大到小排先移动start
//先移动end会start和end会停在比基准值小的数上,相反会停在比基准值大的数上;
//if(start>end){//递归的出口
return;
}
必须在int baseNum=arr[i];之前;
否则会产生越界问题
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Hexo!