6.1 算法的目标
对数组按照升序/降序进行排序。
数组只有left最小标小于右小标才能进行排序排序。
每次从右往左/从左往右寻找时,l
6.2 算法的思想
首先确定一个基准数indexvalue,一般为数组元素的第一个数,设置一个左下标left=0,right=length-1;
从右开始往左寻找,如果找到比基准数小的,将其放到左边,令num[l]=num[r];
从左开始往右寻找,如果找到比基准数大的,将其放到右边,令num[r]=num[l];
当l=r时,将基准数indexvalue赋值给num[l]或者num[r];
6.3 算法的具体步骤
第一次排序完成:实现左边的数尽量小,右边的数尽量大。

step1:确定一个基准数,一般为数组最左边的数,indexvalue=65;
step2:从右开始往左寻找,如果找到比基准数小的,将其放到左边
num[r]=23
step3: 从左开始往右寻找,如果找到比基准数大的,将其放到右边,令num[r]=num[l];
找到nun[l]=95>indexvalue,令num[r]=num[l];
step4:循环操作 step2、step3,直至l和r重合,然后将基准数赋值给num[l]或num[r];
第二次排序:
对左边(left——l)的部分进行快速排序
对右边(l+1-right)的部分进行快速排序
……
……
直至左边和右边的都完成排序!
/*** 快速排序* @param nums*/public static void sort(int [] nums,int left,int right) {//确定一个基准数,一般为最左边的数if (left < right) {int indexvalue = nums[left];int l = left;int r = right;while (l < r) {while (l<r&&nums[r] >=indexvalue) {r--;}nums[l] = nums[r];while (l<r&&nums[l] <=indexvalue) {l++;}nums[r] = nums[l];}nums[r] = indexvalue;sort(nums, left, l);sort(nums, l+1, right);}}
