最优美的快排代码
Posted 林慢慢i
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最优美的快排代码相关的知识,希望对你有一定的参考价值。
前言:之前也写过一篇针对排序的文章八大排序,其中也把快排的几种实现思路实现了一遍,但是无论是哪一种版本代码行数起码都在二十行以上,这俩天刚好看见一段“相当优美的快排模板”,建议可以直接背下来。
1.快排思路:
主要就是“分治”思想,疯狂递归下去!
选一个关键x,这里取中间数。
单趟:x的左边值比它小,x右边值比它大,找出不符合的,交换一下
单趟拍完,再想办法让左边区间有序,key的右边区间有序。
2.快排代码
void quick_sort(int l, int r, int q[])
{
if (l >= r) return;
int i = l - 1, j = r + 1, x = q[(l + r) / 2];
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(l, j, q), quick_sort(j + 1, r, q);
}
赞不绝口,太优美啦!!!
以上是关于最优美的快排代码的主要内容,如果未能解决你的问题,请参考以下文章