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);
}
}
}
快速排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.