#include<iostream>
#include<algorithm>
using namespace std;
void min_heapify(int a[],int i,int size)
{
int l = i * 2 + 1;
int r = i * 2 +2;
int min;
if(l<size&&a[i]> a[l])
min = l;
else
min = i;
if(r<size&&a[min]>a[r])
min =r;
if(min!=i)
{
swap(a[i],a[min]);
min_heapify(a,min,size);
}
}
int main()
{
int a[]={10,2,38,123,64,52,59,40};
int size = sizeof(a)/sizeof(a[0]);
for(int i = (size - 2)/2;i>=0;i--)
{
min_heapify(a,i,size);
}
for(int i = size -1;i>=1;i--)
{
swap(a[0],a[i]);
min_heapify(a,0,--size);
}
for(int i=0;i<8;i++)
cout<<a[i]<<" "<<endl;
return 0;
}
堆排序的实现
最新推荐文章于 2024-12-30 20:13:45 发布