void heapify(int list[], int low, int high) {
int largeIndex;
int temp = list[low];
largeIndex = 2*low + 1;
while(largeIndex<=high) {
if(largeIndex<high)
if(list[largeIndex]<list[largeIndex+1])
largeIndex = largeIndex + 1;
if(temp > list[largeIndex])
break;
else {
list[low] = list[largeIndex];
low = largeIndex;
largeIndex = 2*low + 1;
}
}
list[low] = temp;
}
void buildHeap(int list[], int length) {
int index;
for(index = length/2-1; index>=0; index--) {
heapify(list, index, length-1);
}
}
void heapSort(int list[], int length) {
int lastOutOfOrder;
int temp;
buildHeap(list, length);
for(lastOutOfOrder=length-1; lastOutOfOrder>=0; lastOutOfOrder--) {
temp = list[lastOutOfOrder];
list[lastOutOfOrder] = list[0];
list[0] = temp;
heapify(list, 0, lastOutOfOrder-1);
}
}
分享到:
相关推荐
堆排序C++语言实现,通过一个简单的数组排序介绍了堆排序函数的编写
算法导论上的堆排序c++源程序||学习分享
堆排序算法的c++实现,包括建堆,堆排序等。算法和复杂度参考《算法导论》。
c++实现堆排序算法,简单的console application,对一个数组进行排序
堆排序的c++实现代码
简单的堆排序算法:以定长数组为例,动态数组等可以以此类推
堆排序c++实现,编译通过,供学习堆排序使用
1、 实现堆排序算法。 2、 理论分析并实验验证堆排序算法的时间复杂度。
C++堆排序.zip
堆排序的源代码; 平台:openSUSE 11.4 编译器:GCC version 4.5.1
1) 与堆排序一样,变形堆排序(tHeapSort)需为原址排序; 2) 详细写出实现算法的代码(如堆排序),并在必要处加以注释; 3) 以10个元素为例,说明排序过程; 4) 编程实现算法tHeapSort(同时实现堆排序...
数据结构,选择,插入,冒泡,快排,堆排序c++实现代码
堆排序呢认识文档。、,其中对于堆排序做了一些介绍和一些例子
一个堆排序算法 c++写的 逻辑相同 可自行 改为java 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一...
C++编写的堆排序(最大堆),有输人端,并有详细解释。
使用数组实现堆,以及堆排序。
堆排序的c++实现,heap[]定义为泛型
算发在VC环境下试运行过了,可以运行,直接考进去就行了,为了简单,里面用的数组类型,修改一下就可以了
使用c++模板实现的堆排序、优先级队列,在vs2010下编译运行通过。压缩文件里为两个工程文件,如果有vs2010的话解压缩打开sln文件就可以了,没有的话,新建工程将文件复制过去就ok了。如果有问题可以留言。
霍夫曼树的构造,密码的生成;堆的构造、排序等!