一个Quicksort究竟可以写到多么短
本文转载自: https://www.cnblogs.com/figure9/archive/2010/12/10/1902711.html 作者:figure9 转载请注明该声明。 一个Quick sort 究竟可以写到多么短 说实话,我从来没有能一次写对一个快速排序,总是有各种各样的错误。 快排麻烦就麻烦在,没办法去调试它,因为它是 生成递归 的,只能去静态调试,或者是不断的打印数组的状态以推测错误的可能性。然而快排的基本思想却是极其简单的: 接收一个数组,挑一个数,然后把比它小的那一摊数放在它的左边,把比它大的那一摊数放在它的右边,然后再对这个数左右两摊数递归的执行快排过程,直到子数组只剩一个数为止。 下面我先用最常用的C语言来写一个快速排序: 首先可以先写出一些伪代码: void quicksort(int array[], int left, int right) { //Do nothing if left <= right //p <- Get a number from array //Put elements <= p to the left side //Put elements >= p to the right side //Put p in the middle slot which index is pivot //Recursive quicksort