public class Demo {
public static void main(String[] args) {
int[] nums = {3,25,2,35};
sort(nums,0,nums.length-1);
for (int i : nums) {
System.out.print(i+" ");
}
}
public static void sort(int[]nums,int left,int right){
int l = left;
int r = right;
//拿出左边第一个数作为起始点
int povit = nums[l];
while(l<r){
while(l<r && nums[r] >= povit){
//从右边开始寻找,找到一个比起始点小的数
r--;
}
if(l<r){
//找到比起始点小的数,就交换位置
int temp = nums[l];
nums[l] = nums[r];
nums[r] = temp;
l++;
}
while(l<r && nums[l] <= povit){
//从左边开始找,找到一个比起始点大的数
l++;
}
if(l<r){
//找到比起始点大的是,就交换位置
int temp = nums[l];
nums[l] = nums[r];
nums[r] = temp;
r++;
}
}
//递归
if(l>left){
sort(nums,left,l-1);
}
if(r<right){
sort(nums,l+1,right);
}
}
}
快速排序
最新推荐文章于 2024-08-18 21:36:31 发布