- 算法思路:方法用的是递归,确定左边缘与右边缘,以及一个初始数,如果右边缘数大于最高初始数则左移,否则停下,之后再将左边缘与初始数比较如果比初始数小就右移,直到不符合条件,此时有两种情况①左=右,直接将指向的这个数与初始数替换。②左≠右,交换左右,然后重复左移右移直到①情况出现,然后会出现交换后的左边一块乱的,右边一块乱的。用上述思想完成也就是递归。
package top.ltyzqhh.Annotation;
import java.util.Arrays;
public class QuickSort {
public static void main(String[] args) {
int[] a={324,234,532,1313,1,3,553};
System.out.println(Arrays.toString(a));
quickSort(a,0,a.length-1);
System.out.println(Arrays.toString(a));
}
public static void quickSort(int[] array,int left,int right){
if (array==null || array.length==0) { //当数值长度为零或者为空直接跳出
return;
}
if(left>right){ // 当左边缘数大于右边边缘
return;
}
int key =array[left];
int l=left;
int r=right;
while(l != r){
while (array[r]>=key && l<r){ //如果没有等号就会丢失key
r--;
}
while (array[l]<=key && l<r){
l++;
}
if(l<r){ //防止乱放值,不然当l>r时候也换
int temp=array[r];
array[r]=array[l];
array[l]=temp;
}
}
array[left]=array[l];
array[l]=key;
quickSort(array,left,r-1);
quickSort(array,l+1,right);
}
}