最优美的快排代码

Posted 林慢慢脑瓜子嗡嗡的

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[] 的快排写法

稳定的快排

易错的快排---qsort()

c_cpp 20行的快排(以尾巴为轴,与CLRS保持一致)

淘宝等seo广告里面所讲的三天上首页的快排技术大揭秘