排序算法5--堆排序

原创 2007年10月11日 01:25:00
 堆排序在最差情况下相比快速排序,具有更好的时间复杂度。
template <class T>
void adjust_heap(vector<T> &Vct, int First, int Last)
...{
    
int CurrentPos = First;
    
int ChildPos = 2 * CurrentPos + 1;
    T Temp 
= Vct[First];

    
while (ChildPos <= Last-1)
    
...{
        
if (ChildPos+1 <= Last-1 && Vct[ChildPos] < Vct[ChildPos+1])
            ChildPos 
+= 1;

        
if (Temp < Vct[ChildPos])
        
...{
            Vct[CurrentPos] 
= Vct[ChildPos];
            CurrentPos 
= ChildPos;
            ChildPos 
= 2 * CurrentPos + 1;
        }

        
else
            
break;
    }


    Vct[CurrentPos] 
= Temp;
}


template 
<class T>
void make_heap(vector<T> &Vct)
...{
    
int LastPos = Vct.size();
    
int HeapPos = (LastPos - 2/ 2;

    
while (HeapPos >= 0)
    
...{
        adjust_heap(Vct, HeapPos, LastPos);
        HeapPos
--;
    }

}


template 
<class T>
void heap_sort(vector<T> &Vct)
...{
    make_heap(Vct);
    
int n = Vct.size();

    
for (int i = n; i > 1; i--)
        pop_heap(Vct, i);
}

ios oc实现排序算法

oc实现的快速排序,冒泡排序,直接插入排序和折半插入排序,希尔排序,堆排序,直接选择排序 /*******************************快速排序 start******...
  • u012367335
  • u012367335
  • 2016-06-29 10:53:47
  • 718

iOS开发算法--堆排序

堆排序 详细代码请参考Algorithm。参考代码比文字好理解。 堆排序是时间复杂度为O(N*logN)的排序方法。是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可...
  • MinggeQingchun
  • MinggeQingchun
  • 2017-05-23 15:17:18
  • 555

排序算法(七)——堆排序

基本思想 堆排序是一种树形选择排序,是对直接选择排序的改进。   首先,我们来看看什么是堆(heap): (1)堆中某个节点的值总是不大于或不小于其父节点的值; (2)堆总是一棵完全二叉树(Compl...
  • u012152619
  • u012152619
  • 2015-08-13 08:39:32
  • 15392

需要手写的算法之-----堆排序算法

void HeapCore(vector &vec ,size_t size, size_t end){ size_t i = end ; size_t j = i ; bool flag =...
  • iihtd
  • iihtd
  • 2016-04-28 11:48:45
  • 455

PHP实现排序算法----堆排序(Heap Sort)

算法引进:在这里我直接引用《大话数据结构》里面的开头:在前面讲到 简单选择排序 ,它在待排序的 n 个记录中选择一个最小的记录需要比较 n - 1 次,本来这也可以理解,查找第一个数据需要比较这么多次...
  • baidu_30000217
  • baidu_30000217
  • 2016-11-08 21:13:33
  • 2156

常用排序算法C++实现(堆排序,快速排序,归并排序,基数排序)

常用排序算法C++实现(堆排序,快速排序,归并排序,基数排序)
  • u010662460
  • u010662460
  • 2015-11-30 12:40:17
  • 227

排序算法所用的辅助空间

题目:就排序算法所用的辅助空间而言,堆排序、快速排序和归并排序的关系是() A.堆排序 B.堆排序 C.堆排序>归并排序>快速排序 D.堆排序>快速排序>归并排序 答案:A ...
  • NumberOneOrNothing
  • NumberOneOrNothing
  • 2017-05-06 21:20:42
  • 799

swustoj堆排序算法(1015)

编写程序堆排序算法。按照非递减排序,测试数据为整数。 Description 第一行是待排序数据元素的个数; 第二行是待排序的数据元素。 Input 一趟堆排序的结果。...
  • Swust_Zeng_zhuo_K
  • Swust_Zeng_zhuo_K
  • 2017-04-18 17:11:34
  • 534

java实现算法之堆排序

本文参考文章:http://blog.csdn.net/morewindows/article/details/6709644 堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常...
  • Rebirth_Love
  • Rebirth_Love
  • 2016-05-08 19:18:41
  • 924

排序算法-堆排序

堆排序算法是建立在堆这种数据结构的基础上,其实堆听着很高端,其实很简单,就是一个二叉树,但是又特殊条件,就是其父节点比孩子节点都大(或都小)的堆称为最大堆(最小堆),瞬间感觉很简单了,最简单的保存方法...
  • y990041769
  • y990041769
  • 2015-06-22 21:29:11
  • 1707
收藏助手
不良信息举报
您举报文章:排序算法5--堆排序
举报原因:
原因补充:

(最多只允许输入30个字)