堆排序使用最大堆。堆排序:将初始序列构造成最大堆; 第一趟排序,将堆顶元素 A[0] 和堆底元素 A[n-1]进行交换,然后调用AdjustDown对堆顶元素进行向下调整,使剩余的前n-1个元素还是堆。然后使堆顶元素与A[n-2]交换,在进行向下调整。直到最后只剩下堆顶元素。
template <class T>
void AdjustDown(T heap[],int r,int j){
T temp = heap[r];
int child = 2 * r + 1;
while(child < j ){
child = heap[child] < heap[child+1] ? (child+1) : child;
if(temp < heap[child]){
heap[r] = heap[child];
heap[child] = temp;
r = child ;
child = 2 * r + 1;
temp = heap[r];
}else
break;
}
}
template <class T>
void CreateHeap(T heap[],int n){
for(int i = n/2 - 1;i>-1;i--)
AdjustDown(heap,i,n-1);
}
template <class T>
void swap(T &a, T &b){
T temp = a;
a = b;
b = temp;
}
template <class T>
void HeapSort(T A[],int n){
CreateHeap(A,n);
for(int i = n-1 ;i > 0 ; i--){
swap(A[0],A[i]);
AdjustDown(A,0,i-1);
}
}
int main()
{
int A[7] = {99,36,68,72,12,48,02};
HeapSort(A,7);
return 0;
}
分享到:
相关推荐
最优堆排序算法最优堆排序算法最优堆排序算法最优堆排序算法最优堆排序算法最优堆排序算法
堆排序
7大排序算法(快速排序,冒泡排序,选择排序,归并排序,插入排序,希尔排序,堆排序)实现源码
全面的排序算法实现,包括插入排序、合并排序、堆排序、快速排序。 堆排序:HeapSort 讲解详见http://blog.csdn.net/fly_yr/article/details/8550701 插入排序:InSertion_Sort 讲解详见...
简单的堆排序算法:以定长数组为例,动态数组等可以以此类推
六种内部排序算法比较:直接插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序。包含实验报告和源代码设计。
包含了四种常见的排序算法,是招聘面试时常出的题目,最好自己编译跑一遍
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
堆排序的源代码; 平台:openSUSE 11.4 编译器:GCC version 4.5.1
堆排序算法 java
// 堆排序 #include typedef int InfoType; // 定义其它数据项的类型 #include "compare.h" #include "sort.h" typedef SqList HeapType; // 堆采用顺序表存储表示 void HeapAdjust(HeapType &H,int s,int m) // ...
C语言实现的堆排序算法。 提供了堆排序算法的一个接口,可以为其它功能提供功能。
JAVA排序算法: 直接插入,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,包括算法的详细介绍,以及对几种算法的详细测试
最快的排序算法 谁才是最强的排序算法:快速排序-归并排序-堆排序,排序算法数据结构
(1) 完成5种常用内部排序算法的演示,5种排序算法为:快速排序,直接插入排序,选择排序,堆排序,希尔排序; (2) 待排序元素为整数,排序序列存储在数据文件中,要求排序元素不少于30个; (3) 演示程序开始,...
排序算法: 1、插入排序 2、希尔排序 3、冒泡排序 4、快速排序 5、简单选择排序 6、堆排序
一个堆排序算法 c++写的 逻辑相同 可自行 改为java 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一...
java的堆排序算法实现程序,含测试,可直接运行。java的堆排序算法实现程序,含测试,可直接运行。
直接插入排序 冒泡排序 快速排序 直接选择排序 堆排序 二路归并排序 C#源代码 使用C#实现的数据结构中的排序算法
用c语言实现堆排序算法,堆排序算法的实现,分析堆排序算法