#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
void swap(int* v1, int* v2)
{
int data = *v1;
*v1 = *v2;
*v2 = data;
}
//堆调整
void adjust_heap(int* arr, int cur_index, int len)
{
int max = cur_index;
int lindex = 2 * cur_index + 0x01;
int rindex = 2 * cur_index + 0x02;
if(lindex <= (len - 0x01) && arr[lindex] > arr[max])
max = lindex;
if(rindex <= (len - 0x01) && arr[rindex] > arr[max])
max = rindex;
if(max == cur_index)
return ;
else
{
swap(&arr[max], &arr[cur_index]);
adjust_heap(arr, max, len);
}
}
//非递归的堆调整
void adjust_heap_ex(int* arr, int cur_index, int len)
{
while(1)
{
int max = cur_index;
int lindex = 2 * cur_index + 0x01;
int rindex = 2 * cur_inde
堆排序/插入/删除 整理
最新推荐文章于 2023-09-28 22:31:25 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)