快速排序基于分治
先随机找要排序的数中的一个,然后把大于这个数的放在左边,小于的放在右边,然后递归实现。
模板如下
void quick_sort(int arr[], int i,int j)
{
if (i > j) return;
int l = i - 1, r = j + 1;
int k = arr[i];
while (l < r)//分别从左右两边与k相比较,比较后交换位置
{
do l++; while (arr[l] <= k);
do r--; while (arr[r] >= k);
if (l < r) swap(arr[l], arr[r]);
}
quick_sort(arr, i, r);
quick_sort(arr, r + 1, j);
}