void heap_adjust(int a[],int i,int size){
int temp;
int j = i*2 +1;
if(i<=size/2-1){ //保证其为非叶子节点----这里请注意
if(j+1<size&&a[j]<a[j+1]){
//找出子节点中值最大的
j++;
}
if(a[i]<a[j]){
temp = a[i];
a[i] = a[j];
a[j] = temp;
heap_adjust(a,j,size);
}
}
}
void make_heap(int a[],int size){
//i = (size -2)/2 但是这样写的话,对于size等于 1的情况会导致错误 ----这里请注意
for(int i=size/2-1;i>=0;i--){
heap_adjust(a,i,size);
}
}
void heap_sort(int a[],int size){
make_heap(a,size);
int temp;
for(int i=size-1;i>0;i--){
// a[0] <--> a[i] swap
temp = a[0];
a[0] = a[i];
a[i] = temp;
heap_adjust(a,0,i);
}
}
分享到:
相关推荐
堆排序的c++实现代码
1、 实现堆排序算法。 2、 理论分析并实验验证堆排序算法的时间复杂度。
堆排序13.py 使用python代码实现堆排序13.py 使用python代码实现堆排序13.py 使用python代码实现堆排序13.py 使用python代码实现堆排序13.py 使用python代码实现堆排序13.py 使用python代码实现堆排序13.py 使用...
堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用...
堆排序.py 使用python的代码实现堆排序.py 使用python的代码实现堆排序.py 使用python的代码实现堆排序.py 使用python的代码实现堆排序.py 使用python的代码实现堆排序.py 使用python的代码实现堆排序.py 使用python...
c++实现堆排序算法,简单的console application,对一个数组进行排序
堆排序呢认识文档。、,其中对于堆排序做了一些介绍和一些例子
堆排序10.cpp 还是使用C++代码实现的堆排序10.cpp 还是使用C++代码实现的堆排序10.cpp 还是使用C++代码实现的堆排序10.cpp 还是使用C++代码实现的堆排序10.cpp 还是使用C++代码实现的堆排序10.cpp 还是使用C++代码...
堆排序算法的c++实现,包括建堆,堆排序等。算法和复杂度参考《算法导论》。
内部排序之堆排序的具体代码实现,简单同时也易于看懂
C语言实现的堆排序算法。 提供了堆排序算法的一个接口,可以为其它功能提供功能。
自己编写的堆排序算法实现函数,本人亲测过绝对好使的代码,在这里与大家分享交流,希望能够给你带来帮助
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 堆排序的平均时间复杂度为Ο...
讲解了选择排序的基本原理,并用C++实现了简单选择排序,和堆排序算法,并进行了算法复杂度的分析。
现在一文件中写入数据,后从文件中读出数据,之后构造堆和堆排序
直接插入排序 冒泡排序 快速排序 直接选择排序 堆排序 二路归并排序 C#源代码 使用C#实现的数据结构中的排序算法
堆排序是一种高效的比较类排序算法,它利用了二叉堆的数据结构来实现排序。堆排序可以分为两个主要步骤:建堆(将无序的元素构建成一个堆)和排序(利用堆的性质进行排序)。 代码首先定义了一个HeapSort类,其中...
堆排序是一种高效的比较类排序算法,它利用了二叉堆的数据结构来实现排序。堆排序可以分为两个主要步骤:建堆(将无序的元素构建成一个堆)和排序(利用堆的性质进行排序)。 代码首先定义了一个HeapSort类,其中...
堆排序源代码 C++实现 代码简介易懂 欢迎下载