Algorithm 来自已存在数组的自底向上堆

Algorithm 来自已存在数组的自底向上堆,algorithm,time-complexity,big-o,heapsort,Algorithm,Time Complexity,Big O,Heapsort,我有下面的代码,我写的基础上科尔曼书 publicstaticvoidbuildmaxheap(列表数组){ int size=array.size(); int mid=(大小-1)/2; 对于(int i=mid;i>=0;i--){ int最大; while(true){ 最大=i; int l=2*i+1; int r=2*i+2; if(larray.get(i)){ 最大=l; } if(rarray.get(最大)){ 最大=r; } 如果(最大==i){ 打破 } 交换(数组,i

我有下面的代码,我写的基础上科尔曼书

publicstaticvoidbuildmaxheap(列表数组){
int size=array.size();
int mid=(大小-1)/2;
对于(int i=mid;i>=0;i--){
int最大;
while(true){
最大=i;
int l=2*i+1;
int r=2*i+2;
if(larray.get(i)){
最大=l;
}
if(rarray.get(最大)){
最大=r;
}
如果(最大==i){
打破
}
交换(数组,i,最大);
i=最大值;
}
}
}
公共静态void buildMinHeap(列表数组){
int size=array.size();
int mid=(大小-1)/2;
对于(int i=mid;i>=0;i--){
int最小;
while(true){
最小=i;
int l=2*i+1;
int r=2*i+2;
if(l

我仍在试图完全理解stackoverflow链接,但基于我对该链接的部分理解,我所共享的实现在线性时间内将Java列表转换为MinHeap/MaxHeap,即O(n),并且对于我共享的两种方法都是自下而上的,这是正确的吗?我说的链接看起来不错,不过你可以从
大小/2-1开始。你对代码有问题吗?