当我们构建堆时,数组中的元素会按照特定顺序(升序或降序)排列,具体取决于它是最大堆还是最小堆。那么当构建堆本身以排序顺序排列元素且时间复杂度较小时,堆排序有什么用呢?
void build_heap (int Arr[ ])
{
for(int i = N/2-1 ; i >= 0; i-- )
{
down_heapify (Arr, i, N);
}
}
Run Code Online (Sandbox Code Playgroud)
void heap_sort(int Arr[], int N)
{
build_heap(Arr);
for(int i = N-1; i >= 1; i--)
{
swap(Arr[i], Arr[0]);
down_heapify(Arr, 0, i+1);
}
}
Run Code Online (Sandbox Code Playgroud)