/** * @ClassName 快速排序 * @Author ACER * @Description * 第一遍遍历作用是先将k=array[start]放置于数组中间左右两 边 分别小于k和大于k *遍历方法:数组头尾放一个指针,当两个这个指针数据不同时判断两个数大小交换位置 * 如果符合大小顺序则移动指针 直到不同大小 * 一回合结束后 ,递归以k为中点,左右递归。 * @Date 2021/7/10 21:38 * @Version 1.0 **/ public class 快速排序 { public static void main(String[] args) { int []array={0,1,0,4,2}; quickSort(array,0,array.length-1); for (int i : array) { System.out.println(i); } } public static void quickSort(int []nums,int start,int end){ if (start>=end){ return; } int k=nums[start]; int i=start; int j=end; while(i!=j){ while (j>i&&nums[j]>=k){ j--; } //交换两者位置 int temp=0; temp=nums[j]; nums[j]=nums[i]; nums[i]=temp; while (j>i&&nums[i]<=k){ i++; } //交换i j temp=nums[j]; nums[j]=nums[i]; nums[i]=temp; } quickSort(nums,start,i-1); quickSort(nums,i+1,end); } }