快速排序
讲解
- 首先记住思路就行,到时候就sort就行了,这里是用到了分治的思想。
- 注意返回条件。
- 这里为什么定义i的时候要是l-1
因为就是while循环里面先做的do i++;这里比如说l是0并且i取的l进入while循环的时候会从1开始,而不是0,l同理,所以这里i用l-1,然后j=r+1。 - x这里要取中值,取端点容易TLE。
源码
void quick_sort(int q[], int l, int r)
{
if (l >= r) return;
int i = l - 1, j = r + 1, x = q[l + 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);
}
版权声明:
作者:徐锦桐
链接:https://www.xujintong.com/2023/03/14/102/
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
作者:徐锦桐
链接:https://www.xujintong.com/2023/03/14/102/
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
THE END