什么是快速排序?
快速排序是一种基于分治的思想,通过一趟排序,把要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
快排的思维图:
算法模板
void quick_sort(int q[], int l, int r) //其中l表示左边的指针,r表示右边的指针;
{
if (l >= r) return;
int i = l - 1, j = r + 1, x = q[l + r >> 1]; //x表示中间的值
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);
}