C++ヒープソート
938 ワード
詳細については、このブログの内容を参照してください.https://www.cnblogs.com/chengxiao/p/6129630.html
#include
using namespace std;
void sort(int a[],int n);
void maxHeap(int a[],int i,int n);
void swap(int &a,int &b);
int main()
{
int arry[]={4,6,8,5,9};
sort(arry,5);
for (int i=0;i<5;i++)
cout<=0;i--)// ,
maxHeap(a,i,n);
// +
for (int j=n-1;j>0;j--)
{
swap(a[0],a[j]);// ,
maxHeap(a,0,j);
}
}
// ( ,
void maxHeap(int a[],int i,int n)
{
int temp=a[i];
for (int k=2*i+1;ka[k])// ,k
k++;
if (a[k]>temp)// ,
{
a[i]=a[k];
i=k;
}
else
break;
}
a[i]=temp;
}
void swap(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}