/**
* @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);
}
}
初学算法之分治---快速排序
最新推荐文章于 2024-09-09 22:04:05 发布