#include<iostream>
#include<vector>
#include<string>
#include<set>
#include<map>
#include<unordered_set>
#include<unordered_map>
#include<algorithm>
#include<xfunctional>
using namespace std;
typedef struct{
int d_dimential;
int a_size;
int h_size;
int *arr;
}heap;
void Tune(heap& h,int start){
int i = start;
int index = i;
int temp = h.arr[start];
while (i*h.d_dimential+1 < h.h_size){
int max_temp = temp;
for (int j = i*h.d_dimential+1; j <= (i + 1)*h.d_dimential&&j<h.h_size; j++){
if (max_temp < h.arr[j]){
max_temp = h.arr[j];
index =j;
}
}
if (index == i) break;
else{
h.arr[i] = h.arr[index];
i = index;
}
}
h.arr[index] = temp;
}
void BuildHeap(heap& h){
for (int i = (h.h_size-1) / h.d_dimential; i >= 0; i--){
Tune(h,i);
}
}
void HeapSort(h
算法导论(Problems 6-2) d-ary heap(多叉树实现堆)
最新推荐文章于 2021-12-12 08:55:21 发布