关注
我也觉得有问题, 不过我的答案跟楼主也不同。。。附上我的答案:
好像牛客网目前有点小问题, 图片传不上来
我用数组的方式表示: 从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创作大赛:牛可乐的国庆之旅 #
5525次浏览 82人参与
# 摸鱼打卡站 #
57771次浏览 747人参与
# 深信服秋招来了 #
267765次浏览 2902人参与
# 牛友的国庆旅行碎片 #
1707次浏览 8人参与
# 距离放假还有_天,我已经…… #
7323次浏览 49人参与
# 国庆放假,你还会投简历吗? #
2627次浏览 25人参与
# 思朗科技求职进展汇总 #
65530次浏览 453人参与
# 你秋招想去哪些公司 #
60506次浏览 1687人参与
# 技术转行的心路历程 #
63598次浏览 703人参与
# 今年秋招还有金九银十吗 #
5894次浏览 43人参与
# 应届生第一份工作最好去大厂吗? #
38019次浏览 616人参与
# 秋招感动瞬间 #
40058次浏览 344人参与
# 国庆放假,你还会主动学习吗? #
2356次浏览 27人参与
# 25届网易互娱暑实进度 #
86098次浏览 737人参与
# 滴滴求职进展汇总 #
259883次浏览 2283人参与
# 4399求职进展汇总 #
35478次浏览 208人参与
# 阿里云工作体验 #
27384次浏览 100人参与
# 非技术岗是怎么找实习的 #
251056次浏览 2515人参与
# 哪些公司真双非友好? #
31749次浏览 152人参与
# 滴滴工作体验 #
30178次浏览 137人参与
# 大厂面试初体验 #
58425次浏览 287人参与
# 工作后会跟朋友渐行渐远吗 #
43379次浏览 330人参与