最优美的快排代码

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);
}

赞不绝口,太优美啦!!!

以上是关于最优美的快排代码的主要内容,如果未能解决你的问题,请参考以下文章

Python的快排应有的样子

返回值为int[] 的快排写法

具体解释Redis源代码中的部分高速排序算法(pqsort.c)

堆排/快排/希尔/归并排序,谁更快?

程序员基础之——排序算法

稳定的快排