首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

经典算法之怎么理解快速排序算法讲解与图示

2013-03-13 
经典算法之如何理解快速排序算法讲解与图示经典算法之教你如何理解快速排序算法讲解与图示经典的快速排序

经典算法之如何理解快速排序算法讲解与图示

经典算法之教你如何理解快速排序算法讲解与图示

经典算法之怎么理解快速排序算法讲解与图示

经典的快速排序算法讲解,网上流行着很多篇文章,有些文章读起来不是那么容易理解,还有些文章不知道是不是快速排序来的,验证起来真的得不到正确的结果,所以我也来写一篇文章,介绍一下自己的理解,毕竟是读书时学习的经典,而且也是面试时常常被拿来当做考题,所以,在这里就算是给需要用到快速排序算法思想的程序员分享一下自己的理解。

首先,我们需要一组等待排序的数组,如下:
A[0],A[1],A[2],A[3],A[4],A[5],A[6],A[7],A[8],A[9]
 {8,6,2,5,7,4,7,9,3}

快速排序的思想如上面示意图,注意未输入的实际数据,所以上面只是说明一个思想:
(1),需要一个参考点,Key
(2)把Key跟最后一个调换,这里即Key<->A[9]
(3)开始从A[0]逐一对比,A[n]<Key? 比key小的A[n]将会调换最前面那个比Key大的A[i]同时++i,否则什么也不做n++
(4)上面3步走完后,将得出第1轮的排序结果,你这时会发现,前面一部分都是比Key小的,后面一部分都是比Key大的,这样就分成了2部分了,接着分开来递归排序前面一部分与后面一部分。
(5)是最后一步的排序结果了,还可以分2部分?是则走第一步,否则弹出递归上一级。


演示代码如下:


热点排行