堆排序
来源:互联网 发布:随机抽签软件绿色版 编辑:程序博客网 时间:2024/05/20 15:40
#include<iostream>using namespace std;void AdjustHeap(int a[], int top, int last);//堆排序 void HeapSort(int a[], int n){ for(int i=n/2-1;i>=0;i--) AdjustHeap(a,i,n-1); for(int i=n-1;i>=0;i--) { //交换 int temp=a[0]; a[0]=a[i]; a[i]=temp; //调整堆 AdjustHeap(a,0,i-1); }}//调整堆 void AdjustHeap(int a[], int top, int last){ int temp=a[top]; while(top*2+1 <= last) { int son = top*2+1; if(son+1<=last && a[son+1]>a[son])son++; if(a[son]<=temp)break; a[top]=a[son]; top=son; } a[top]=temp;}int main(){ int a[]={10,23,12,34,10,23,54,25,45,10,9,0,2,3,7,26,0,3,4,4,5,0,2,12,0,23444,22333,222,}; int len=sizeof(a)/sizeof(int); HeapSort(a,len); for(int i=0;i<len;i++) cout << a[i] << ","; system("pause"); return 0; }