快速排序的思想为:
- 选取第一个数为基数;
- 分区过程,将比这个数大的放到右边,比这个数小的放到左边;
- 再分别对左右这两个区间重复第二步操作,知道每个区间中只剩下一个数。
public void quick_sort(int nums[], int l, int r){
if(l < r){
int i = l;
int j = r;
int num = nums[i];
while(i < j){
while(nums[j] >= num && i < j){
j--;
}
if(i < j) nums[i++] = nums[j];
while (nums[i] < num) {
i++;
}
if(i < j)nums[j--] = nums[i];
}
nums[i] = num;
quick_sort(nums, l, i-1);
quick_sort(nums, i+1, r);
}
}