快速排序
作用
使一个无序数组,变成一个从小到大或是从大到小的有序数组
快速排序思想
快速排序是基于分治的,选取分割点x,把小于等于x的放在左边,大于等于x的放在右边
之后再左右进行递归操作
实现步骤
1. 选取分割点x
2. 在数组的左右两端,各设置一个指针,这两个指针分别往中间移动,把小于等于x的数放在左边,
大于等于x的放在右边
3. 进行左右递归,回到步骤1,重复操作
实现代码
void quick_sort(int q[], int l, int r){
if(l >= r) return;
int x = q[l], i = l - 1, j = r + 1;
while(i < j){
do i ++; while(q[i] < x);
do j --; while(q[j] > x);
if(i < j) swap(q[i], q[j]);
}
quick_sort(q, l, j);
quick_sort(q, j + 1, r);
}