快速排序对于一个合格的程序员来说都是基础,不管你工作中会不会用到,它的思想都是很值得我们学习的。我就是由于对它的思想掌握不是很透彻死在TX二面,往事不要再提,吃一堑长一智,趁还来来得及补救加油吧!
快排的思想其实说起来也不是很难,我这里就简单说一下。而且这篇东西并不是讲算法的,只是随手写了个go语言版的,放在这里便于自己整理而已。
从小到大···从大到小自己反过来就行了
1、从数组中选取一个数,称它为标准数吧;
2、将数组中其他的数,比标准数小的移到标准数的左边,比校准数大的移到标准数的右边;
3、分治数组,就是将数组以标准数分两个数组再进行1、2步操作。
如果还想更详细了解它的细节的话,参考这篇博客,讲得很通俗
http://blog.csdn.net/morewindows/article/details/6684558
我下面的代码也是参考这篇博客的风格的。就酱···上代码
func adjustArray(array []int, left, right int) { if left < right { i, j, x := left, right, array[left] for i < j { for i < j && array[j] >= x { j-- } if i < j { array[i] = array[j] i++ } for i < j && array[i] < x { i++ } if i < j { array[j] = array[i] j-- } } array[i] = x adjustArray(array, left, i-1) adjustArray(array, i+1, right) } } func quickSort(array []int) { adjustArray(array, 0, len(array)-1) }
有疑问加站长微信联系(非本文作者)