//创建最大堆
void max_heap_build(int a[], int start, int end)
{
int dad = start;
int son = 2 * dad + 1;
while (son<=end){
if (son+1<=end&&a[son]< a[son+1]){
++son;
}
if (a[dad]>a[son]){
break;
}
int temp = a[son];
a[son] = a[dad];
a[dad] = temp;
dad = son;
son = 2 * dad + 1;
}
}
void heap_sort(int arr[], int data_size)
{
for (int i = data_size >> 1;i > 0;--i) {
//min_heap_build(arr, i-1, data_size - 1);
max_heap_build(arr, i - 1, data_size - 1);
}
for (int i = data_size - 1;i >0;--i) {
int temp = arr[0];
arr[0] = arr[i];
arr[i] = temp;
max_heap_build(arr, 0,i-1);
}
}