主要搞清楚他们的原理,先取一个轴设置为temp ,第一步这个数组的最右边开始和轴比较,如果大于这个轴,就(right)right--向后移动一位,如果小于轴这个值就要最左边的交换位置,也就是赋值给最左边 arr[left] =arr[right] 在进行左边扫描,最左边和轴比较,如果小于轴,就(left)left++向前移动一位,如果大于轴这个值就要最右边的交换位置,也就是赋值给最左边
arr[right]=arr[left] 这个方法大概就是这样的 用的时候调用传参就好了
//方法
public static int[] qs(int arr[],int l,int r){ int left=l; int right=r; int temp=arr[left]; while(left<right){ while(left<right&&arr[right]>temp){ right--; } if(left<right){ arr[left]=arr[right]; } while(left<right&&arr[left]<temp){ left++; } if(left<right){ arr[right]=arr[left]; } if(left>=right){ arr[left]=temp; } } if(l>left){ arr=qs(arr,l,right-1); } if(left+1<r){ arr=qs(arr,left+1,r); } return arr; } //主函数 public static void main(String[] args) { int[] arr=new int[]{2,6,7,9,22,5,11,66,778,6666,144,5}; int l=0; int r=arr.length-1; if(l<r) { //保证左边的值小于最右边才能运行 arr = qs(arr, l, r); } for (int i:arr){ System.out.println(i); } }