/*============================================================================
Name : Exercise.cpp
Author : Haier
Version : 1.01
Copyright : Copyright (c) 2014
Description : HeapAdjust in C, Ansi-style, Compile by Eclipse
============================================================================*/
#include <stdio.h>
#include <stdlib.h>
void HeapAdjust(int Array[],int From,int To)
{
int j,Temp=Array[From];
for(j=2*From; j<=To; j*=2)
{
if(j<To && Array[j]<Array[j+1])
{
++j;
}
if(Temp>=Array[j])
{
break;
}
Array[From]=Array[j];
From=j;
}
Array[From]=Temp;
}
int HeapSort(int Array[],int Size)
{
int i,Temp;
for(i=(Size-1)/2; i>0; i--)
{
HeapAdjust(Array,i,Size-1);
}
for(i=Size-1; i>1; i--)
{
{Temp=Array[1];Array[1]=Array[i];Array[i]=Temp;}
HeapAdjust(Array,1,i-1);
}
}
int main(void) {
int ArrayToSort[]={0,2,3,5,1,4};
int i;
HeapSort(ArrayToSort,sizeof(ArrayToSort)/sizeof(int));
for(i=1; i<sizeof(ArrayToSort)/sizeof(int); i++)
{
printf("%d,",ArrayToSort[i]);
}
return EXIT_SUCCESS;
}
堆排序
最新推荐文章于 2024-09-04 23:05:17 发布