一个Quicksort究竟可以写到多么短
一个Quicksort究竟可以写到多么短
说实话,我从来没有能一次写对一个快速排序,总是有各种各样的错误。
快排麻烦就麻烦在,没办法去调试它,因为它是生成递归的,只能去静态调试,或者是不断的打印数组的状态以推测错误的可能性。
然而快排的基本思想却是极其简单的:接收一个数组,挑一个数,然后把比它小的那一摊数放在它的左边,把比它大的那一摊数放在它的右边,然后再对这个数左右两摊数递归的执行快排过程,直到子数组只剩一个数为止。
下面我先用最常用的C语言来写一个快速排序:
首先可以先写出一些伪代码:
void quicksort(int array[], int left, int right)
{
//Do nothing if left <= right
//p <- Get a number from array
//Put elements <= p
http://www.cyqdata.cn/cnblogs/article-detail-292