#include<iostream>
using namespace std;
void heap(int *a,int i,int size){
int left=2*i;
int right=2*i+1;
int tag=i;
if(i<=size/2){
if(left<=size && a[left]>a[tag])
tag=left;
if(right<=size && a[right]>a[tag])
tag=right;
if(tag!=i){
int temp=a[i];
a[i]=a[tag];
a[tag]=temp;
heap(a,tag,size);
}
}
}
void heapSort(int *a,int size){
for(int i=9;i>=1;i--)
heap(a,i,size);
for(int i=size;i>0;i--){
int temp=a[i];
a[i]=a[1];
a[1]=temp;
heap(a,1,i-1);
}
}
int main(){
int a[20]={0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18};
heapSort(a,19);
for(int i=1;i<=19;i++)
cout<<a[i]<<" ";
return 0;
}
堆排序
最新推荐文章于 2015-10-10 07:16:00 发布