数组实现堆排序(来源算法导论)
来源:互联网 发布:想买摔炮在淘宝怎么搜 编辑:程序博客网 时间:2024/06/05 22:50
//from 算法导论#include <iostream>using namespace std;int left_place(int );int right_place(int);void swap_two(int &,int &);void Max_HEAP(int* ,int ,int);void build_HEAP(int *,int );void Heap_sort(int *,int);int left_place(int i){return 2*i;}int right_place(int i){return 2*i+1;}void swap_two (int &a,int &b){int temp;temp=a;a=b;b=temp;}void Max_HEAP(int *A,int i,int heap_size){int l,r,largest=0;l=left_place(i);r=right_place(i);if (l>heap_size){return;}if (l<=heap_size&&A[l]>A[i]){largest=l;}else largest=i;if (r<=heap_size&&A[r]>A[largest]){largest=r;}if (largest!=i){swap_two(A[i],A[largest]);Max_HEAP(A,largest,heap_size);}else{i++;Max_HEAP(A,i,heap_size);}}void build_HEAP(int *A,int len){for (int i=len/2;i>=1;i--){Max_HEAP(A,i,len);}}void Heap_sort(int *A,int len){build_HEAP(A,len);for (int i=len;i>=2;i--){swap_two(A[1],A[i]);len--;Max_HEAP(A,1,len);}}int main(){int n;cout<<"input sort numbers\n";cin>>n;int *A=new int[n+1];for (int i=1;i<=n;i++){cin>>A[i];}build_HEAP(A,n);cout<<"print HEAPED data \n";for (int i=1;i<=n;i++){cout<<A[i]<<" ";}cout<<endl;cout<<"Heap_sort data \n";Heap_sort(A,n);for (int i=1;i<=n;i++){cout<<A[i]<<" ";}cout<<endl;return 0;}
0 0
- 数组实现堆排序(来源算法导论)
- 堆排序(算法导论实现)
- 【算法导论】堆排序实现
- 算法导论堆排序实现
- 堆排序(算法导论)
- 堆排序(算法导论)
- 算法导论-----------堆排序研究 (堆排序原理及算法实现(最大堆))
- 堆排序(最小堆)--【算法导论】
- c++堆排序实现(heapsort) (算法导论)
- 算法导论:堆排序递归实现 (c语言)
- 算法导论:堆排序非递归实现(c语言)
- 《算法导论》7、堆排序实现(C++)
- 【算法导论】c++实现堆排序
- 堆排序__算法导论实现
- 算法导论堆排序Java实现
- 堆排序C语言实现 算法导论
- 算法导论C语言实现: 堆排序
- 《算法导论的Java实现》 堆排序
- unity3d 2d游戏中鼠标拉近旋转拖拽方法
- Android - SurfaceView
- UIImageView setAnimationImages
- 在eclipse中将android项目生成apk并且给apk签名
- 正确使用IDEA - 快捷键
- 数组实现堆排序(来源算法导论)
- Java5、6性能测试结果
- How to Use Kdiff3 as a 3-way Merge Tool With Mercurial, Git, and Tower.app
- Textview字体阴影
- C#之DataSet与Datatable
- App Store 评分方法
- 移动应用设计
- 《个人学习记录1》协议TCP/IP详解卷一:协议
- Firebug的安装