no message

master
a7458969 2020-05-11 18:23:08 +08:00
parent c27a7d85cd
commit 47296e6b86
1 changed files with 12 additions and 4 deletions

View File

@ -102,8 +102,8 @@ template <typename T>
void buildMaxHeap(T A[], int len) //建立最大堆
{
std::cout <<"\r\n";
// 从最后一个非叶子节点n/2-1开始自底向上构建
for (int i = len / 2-1; i >= 0; i--) //从n/2-1调用一次maxHeapIfy就可以得到最大堆
// 从最后一个非叶子节点n/2-1开始自底向上构建根据完全二叉树的性质, i --肯定也是根节点。从右到左,从下到上调整。
for (int i = len / 2 - 1; i >= 0; i--) //从n/2-1调用一次maxHeapIfy就可以得到最大堆
maxHeapIfy(A, i, len);
for (int i = 0; i < len; i++){
std::cout << A[i]<<" ";
@ -139,10 +139,18 @@ void PreOrderTraverse(BSTNode<T> *data)
PreOrderTraverse(data->rchild);
}
}
/*
*,
(+, O(n));
(siftdown, O(n*log n) ).
*/
template <typename T>
int heapsort(T *data,uint64_t len,CompareHanlder<T> handle){
buildMaxHeap(data, len); //先建立堆
buildMaxHeap(data, len); //先建立最大堆,最大堆只能保证根节点比左右两个子树还大
// todo
}