堆排序实现
2011-10-03 12:13
113 查看
(编写时有几个错误点,见注释,已通过dev c++调试通过)
#include <stdio.h>#include <conio.h>void HeapAdjust(int a[],int s,int n)//大顶堆{int temp=a[s];for(int j=2*s;j<=n;j*=2){if(j<n&&a[j]<a[j+1]) j++;if(temp>a[j]) break;//这个错误点困扰了我好长时间。temp写成a[s]了,忘记了s[s]会发生变化。a[s]=a[j];//一开始颠倒了s=j;}a[s]=temp;}void HeapSort(int a[],int len){for(int i=len/2;i>0;--i){HeapAdjust(a,i,len);}//建一个初始堆for(int i=len;i>1;--i){int temp=a[1];a[1]=a[i];a[i]=temp;HeapAdjust(a,1,i-1);}}int main(){int a[11]={0,9,8,7,1,6,4,3,5,2,0};printf("初始序列");for(int i=1;i<11;i++){printf("%d ",a[i]);}HeapSort(a,10);printf("排序后的序列");for(int i=1;i<11;i++){printf("%d ",a[i]);}getch();return 0;}
相关文章推荐
- JavaScript 实现堆排序
- C++实现堆排序
- Java堆排序(HeapSort)算法实现
- 冒泡排序、选择排序、堆排序、快速排序、插入排序算法复杂度分析与算法实现(自己总结与转)
- 算法导论:堆排序(java实现)
- 【数据结构】堆,堆实现优先级队列,堆排序
- C语言实现堆排序
- 程序员必知的8大排序(java实现)(二)(堆排序)
- 数据结构系列之堆排序(基于数组实现)
- C++ 实现堆排序 归并排序 快速排序
- 基本算法-堆排序及其Java实现
- c++实现最大堆建立(链表结构)和堆排序
- 堆排序的实现 C++
- 《算法导论》CLRS算法C++实现(三)P75 堆排序
- 选择排序之堆排序Java实现
- HeapSort 堆排序 基于伪代码实现
- PHP SPL神器实现堆排序
- 堆排序(Heap Sort)原理及Java实现
- 插入排序、冒泡排序、选择排序、希尔排序、快速排序、归并排序、堆排序和LST基数排序——C++实现
- 《七大排序算法》(五)之堆排序(Java实现)