通过建堆来实现排序
void HeapAdjust(int a[], int s, int m)
{
int temp, j;
temp = a[s];
for (j = 2 * s; j <= m; j *= 2)
{
if (j < m && a[j] < a[j + 1])
++j;
if (temp >= a[j])break;
a[s] = a[j];
s = j;
}
a[s] = temp;
}
void HeapSort(int a[], int n)
{
int i;
for (i = n / 2; i > 0; i--)
HeapAdjust(a, i, n - 1);
for (i = n - 1; i > 0; i--)
{
swap(a[0],a[i]);
HeapAdjust(a, 0, i - 1);
}
}