#include<iostream>
using namespace std;
void AdjustHeap(int Array[], int spoint, int len)
{
while ( ( 2 * spoint + 1 ) < len )
{
int mpoint = 2 * spoint + 1;
if ( (2 * spoint + 2) < len )
{
if ( Array[ 2 * spoint +1 ] < Array[ 2 * spoint + 2] )
{
mpoint = 2 * spoint +2;
}
}
if ( Array[mpoint] > Array[spoint] )
{
int ntemp = Array[mpoint];
Array[mpoint] = Array[spoint];
Array[spoint] = ntemp;
spoint = mpoint;
}
else
{
break;
}
}
return;
}
void HeepSort(int Array[], int len)
{
for ( int i = ( len / 2 - 1 ); i >= 0; i-- )
{
AdjustHeap( Array, i, len );
}
for ( int i = len -1; i > 0; i-- )
{
int ntemp = Array[0];
Array[0] = Array[i];
Array[i] = ntemp;
AdjustHeap( Array, 0, i );
}
return;
}
int main(int argc, char *argv[])
{
int Array[9] = { 5, 4, 7, 3, 9, 1, 6, 8, 2};
for ( int i = 0; i<9; i++)
cout<<Array[i]<<" ";
cout<<endl;
HeepSort(Array, 9);
for ( int i = 0; i<9; i++)
cout<<Array[i]<<" ";
return 0;
}
堆排序heapsort
最新推荐文章于 2022-01-22 11:10:57 发布