关注
我也觉得有问题, 不过我的答案跟楼主也不同。。。附上我的答案:
好像牛客网目前有点小问题, 图片传不上来
我用数组的方式表示: 从A.length/2 = 8/2 = 4 也就是 数字1开始调整
45301726 -> 45301726 -> 45361720 -> 45761320 ->
46751320 -> 76451320
附上代码:
public int[] heapSort(int[] A, int n) {
for(int i=(n-1)/2;i>=0;--i){ //将数组初始化为堆
heapAdSort(A,i,n);
}
print(A);
//只要初始化部分,后面代码注释掉
/* for(int i=n-1;i>0;--i){
int temp = A[i];
A[i] = A[0];
A[0] = temp;
heapAdSort(A,0,i);
}
*/
return A;
}
public void heapAdSort(int[] A,int i,int
n){//A为数组,i为结点值,n为数组长度
int child = 2 * i + 1; //左孩子
int temp = A[i];//保存节点值
while(child < n){
if(child+1 < n && A[child] <
A[child+1]){// 把child节点指向左右孩子中较大的一个
child ++ ;
}
if(A[i] < A[child]){//如果节点小于孩子值,则交换,节点向下
A[i]=A[child];
i = child;
child = 2*i+1;
}else{
break;
}
A[i] = temp;//将节点保存;
}
}
public void print(int[] A){
for(int i:A){
System.out.print(i+" ");
}
System.out.println();
}
查看原帖
点赞 3
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客新年AI问运 #
4039次浏览 85人参与
# 秋招吐槽大会 #
303664次浏览 1520人参与
# 牛客AI体验站 #
15826次浏览 278人参与
# 找工作八股要背到什么程度? #
58489次浏览 734人参与
# 秋招踩过的“雷”,希望你别再踩 #
185849次浏览 1686人参与
# 我们是不是被“优绩主义”绑架了? #
32158次浏览 484人参与
# 工作中的卑微时刻 #
33217次浏览 197人参与
# 如何提高实习转正率? #
86022次浏览 504人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
144954次浏览 878人参与
# 牛友的春节生活 #
13305次浏览 232人参与
# 备战春招/暑实,现在应该做什么? #
8607次浏览 209人参与
# 材料专业哪个方向更好找工作? #
37694次浏览 118人参与
# 多益网络工作体验 #
62983次浏览 304人参与
# 工作压力大怎么缓解 #
146141次浏览 1327人参与
# 找工作中的意难平 #
984264次浏览 6424人参与
# 反问环节如何提问 #
131300次浏览 2699人参与
# 从夯到拉,锐评职场mentor #
8293次浏览 114人参与
# 实习到现在,你最困惑的一个问题 #
7566次浏览 171人参与
# 为了找工作你投递了多少公司? #
103406次浏览 687人参与
# 什么是优秀的实习经历 #
36287次浏览 388人参与