数据结构_选择排序_C.pptVIP

  • 21
  • 0
  • 约5.38千字
  • 约 33页
  • 2015-09-30 发布于重庆
  • 举报
数据结构_选择排序_C

* 堆排序算法 ?void HeapSort (HeapType H){ //对顺序表H进行堆排序。 ????for(i=H.length/2;i0;--i) //把H.r[1..length]建成大顶堆 ????????HeapAdjust(H,i,H.length); ????for(i=H.length; i1; --i){ //将堆顶记录和当前未经排 //序子序列H.r.[1..i]中最后一个记录相互交换 ????????H.r[1]--- H.r[i];? ????????HeapAdjust(H,1,i-1); //将H.R[1..i-1]重新调整为大顶堆 ????} ?} //HeapSort 4)堆排序的效率分析 在整个堆排序中,共需要进行 n+?n/2? -1 次筛选运算,每次筛选运算进行双亲和孩子或兄弟结点的排序码的比较和移动次数都不会超过完全二叉树的深度。故每次筛选运算的时间复杂度为O(log2n),则整个堆排序过程的时间复杂度为O(nlog2n) 。 堆排序在最坏情况下,时间复杂度也为O(nlog2n)。相对于快速排序,这是堆排序的最大优点。此外,堆排序仅需一个记录大小辅助存储空间供交换使用。 由于存在着不相邻元素之间的互换,因此,堆排序是一种不稳定的排序方法。 * * * * * *

文档评论(0)

1亿VIP精品文档

相关文档