核心思想:
要求升序输出,也就是从小到大排列
1.建大堆:
关键:在于向下调整
2.建好大堆后,循环删除堆顶元素
关键在于:堆顶元素与最后一个元素进行交换
1.sort.h
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
return;
}
void PrintArray(int array[], int size)
{
printf("打印数组结果:\n");
int i = 0;
for (; i < size; ++i) {
printf("%d ", array[i]);
}
printf("\n");
}
/*****************************************************
* 堆排序
* 时间复杂度:O(NlogN)
* 空间复杂度:O(1)
* 稳定性:不稳定排序
********************************