C++实现堆排序
2012-04-19 11:51
274 查看
C++实现堆排序的源代码:
#include <iostream.h>void zhenli(int *a,int i,int Num){if (2*i+1<=Num){if(a[2*i-1]>a[2*i]){if (a[i-1]<a[2*i-1]){int temp=a[i-1];a[i-1]=a[2*i-1];a[2*i-1]=temp;zhenli(a,2*i,Num);}}if (a[2*i-1]<=a[2*i]){if (a[i-1]<a[2*i]){int temp=a[i-1];a[i-1]=a[2*i];a[2*i]=temp;zhenli(a,2*i+1,Num);}}}if(2*i==Num){if (a[i-1]<a[2*i-1]){int temp=a[i-1];a[i-1]=a[2*i-1];a[2*i-1]=temp;zhenli(a,2*i,Num);}}}void Solt(int *a,int c){for (int i=c/2;i>0;i--){zhenli(a,i,c);}}int Paixu(int *a,int Num){Solt(a,Num);int Temp=a[0];a[0]=a[Num-1];a[Num-1]=Temp;cout<<a[Num-1]<<endl;Num=Num-1;if (Num==1){cout<<a[Num-1]<<endl;return 1;}Solt(a,Num);Paixu(a,Num);}void main(){int Num;cout<<"how many int num do you want do input?"<<endl;cin>>Num;int *ARR=new int[Num];for (int i=0;i<Num;i++){cin>>ARR[i];}Paixu(ARR,Num);}
相关文章推荐
- c/c++实现堆排序
- 算法导论-第六章-堆排序:基于最大堆的排序C++实现
- C++实现堆排序
- c++实现堆排序及运行实例结果
- 用C++实现堆排序
- 算法设计之堆的实现与堆排序实现(C++实现)
- 堆排序的C++实现
- c++实现最大堆建立(链表结构)和堆排序
- c++实现数据结构中的各种排序方法:直接插入、选择,归并、冒泡、快速、堆排序、shell排序
- 创建堆,堆排序的详细实现过程,C++完整代码
- C++ 实现堆排序
- c++实现堆排序及运行实例结果
- 堆排序的实现 C++
- c++实现最大堆建立(链表结构)和堆排序
- c++实现堆排序及运行实例结果
- c++实现堆排序--从俺的java版本翻译过来
- 堆排序的C++实现
- 编程导论中 堆排序 C++实现
- 加速堆排序的C++实现
- c++实现最大堆建立(链表结构)和堆排序