您的位置:首页 > 编程语言 > C语言/C++

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);}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: