快速算法.docVIP

  • 4
  • 0
  • 约 10页
  • 2015-07-22 发布于云南
  • 举报
精通八大排序算法系列:一、快速排序算法 ? 作者 July? 二零一一年一月四日 ------------------------------------------ ?? 写此八大排序算法系列之前,先说点题外话。 每写一篇文章,我都会遵循以下几点原则: 一、保持版面的尽量清晰,力保排版良好。 二、力争所写的东西,清晰易懂,图文并茂 三、尽最大可能确保所写的东西精准,有实用价值。 ?? 因为,我觉得,你既然要把你的文章,公布出来,那么你就一定要为你的读者负责。 不然,就不要发表出来。一切,为读者服务。 ?? ok,闲不多说。接下来,咱们立刻进入本文章的主题,排序算法。 众所周知,快速排序算法是排序算法中的重头戏。 因此,本系列,本文就从快速排序开始。 ------------------------------------------------------ 一、快速排序算法的基本特性 时间复杂度:O(n*lgn) 最坏:O(n^2) 空间复杂度:O(n*lgn) 不稳定。 快速排序是一种排序算法,对包含n个数的输入数组,平均时间为O(nlgn),最坏情况是O(n^2)。 通常是用于排序的最佳选择。因为,排序最快,也只能达到O(nlgn)。 二、快速排序算法的描述 算法导论,第7章 快速排序时基于分治模式处理的, 对一个典型子数组A[p...r]排序的分治过程为三个步骤: 1.分解: A[p..r]被划分为俩个(可能空)的子数组A[p ..q-1]和A[q+1 ..r],使得 A[p ..q-1] = A[q] = A[q+1 ..r] 2.解决:通过递归调用快速排序,对子数组A[p ..q-1]和A[q+1 ..r]排序。 3.合并。 ? 三、快速排序算法 版本一: QUICKSORT(A, p, r) 1 if p r 2??? then q PARTITION(A, p, r)?? //关键 3???????? QUICKSORT(A, p, q - 1) 4???????? QUICKSORT(A, q + 1, r) 数组划分 快速排序算法的关键是PARTITION过程,它对A[p..r]进行就地重排: PARTITION(A, p, r) 1? x A[r] 2? i ← p - 1 3? for j ← p to r - 1 4?????? do if A[j] ≤ x 5???????????? then i ← i + 1 6????????????????? exchange A[i] - A[j] 7? exchange A[i + 1] - A[r] 8? return i + 1 ? ok,咱们来举一个具体而完整的例子。 来对以下数组,进行快速排序, ??2?? 8?? 7?? 1?? 3?? 5?? 6?? 4(主元) 一、 i p/j ??2?? 8?? 7?? 1?? 3?? 5?? 6?? 4(主元) j指的2=4,于是i++,i也指到2,2和2互换,原数组不变。 j后移,直到指向1.. 二、 ????????????? j(指向1)=4,于是i++ i指向了8,所以8与1交换。 数组变成了: ???????i??????? ?j ? 2?? 1?? 7?? 8?? 3?? 5?? 6?? 4 三、j后移,指向了3,3=4,于是i++ i这是指向了7,于是7与3交换。 数组变成了: ????????????i???????? j ? 2?? 1?? 3?? 8?? 7?? 5?? 6?? 4 四、j继续后移,发现没有再比4小的数,所以,执行到了最后一步, 即上述PARTITION(A, p, r)代码部分的 第7行。 因此,i后移一个单位,指向了8 ?????????????????i????????????? j ? 2?? 1?? 3?? 8?? 7?? 5?? 6?? 4 A[i + 1] - A[r],即8与4交换,所以,数组最终变成了如下形式, ??2?? 1?? 3?? 4?? 7?? 5?? 6?? 8 ok,快速排序第一趟完成。 4把整个数组分成了俩部分,2 1 3,7 5 6 8,再递归对这俩部分分别快速排序。 i p/j ? 2?? 1?? 3(主元) ? 2与2互换,不变,然后又是1与1互换,还是不变,最后,3与3互换,不变, 最终,3把2 1 3,分成了俩部分,2 1,和3. 再对2 1,递归排序,最终结果成为了1 2 3. 7 5 6 8(主元),7、5、6、都比8小,所以第一趟,还是7 5 6 8, 不过,此刻8把7 5 6 8,分成了? 7 5 6,和8.[7 5 6-5 7 6-5 6 7] 再对7 5 6,递归排序,最终结果变成5 6 7 8。 o

文档评论(0)

1亿VIP精品文档

相关文档