关注
我也觉得有问题, 不过我的答案跟楼主也不同。。。附上我的答案:
好像牛客网目前有点小问题, 图片传不上来
我用数组的方式表示: 从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
相关推荐
昨天 14:12
浙江工商大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 应届生,你找到工作了吗 #
1567次浏览 23人参与
# 双非应该如何逆袭? #
172278次浏览 2883人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
38026次浏览 275人参与
# 简历当中有水分算不算造假? #
3038次浏览 30人参与
# 谈薪时HR压价该怎么应对 #
205579次浏览 3177人参与
# 实习生的蛐蛐区 #
2470次浏览 33人参与
# 春招进度记录 #
340061次浏览 3162人参与
# 三一集团提前批进度交流 #
22004次浏览 138人参与
# 百度秋招提前批进度 #
104966次浏览 1121人参与
# 毕业旅行去哪玩儿 #
7651次浏览 121人参与
# 正在春招的你,也参与了去年秋招吗? #
308474次浏览 2523人参与
# 非技术岗投递进展 #
144236次浏览 1264人参与
# 双非有机会进大厂吗 #
433008次浏览 4325人参与
# 上班到公司第一件事做什么? #
60174次浏览 517人参与
# 百度工作体验 #
229321次浏览 2008人参与
# 秋招盘点:机械人值得去的企业 #
71820次浏览 670人参与
# 材料进Fab厂真的劝退吗? #
43005次浏览 184人参与
# 如果可以,你希望哪个公司来捞你 #
96426次浏览 397人参与
# 没有合适的工作,你会先找个干着,还是考公考研 #
115918次浏览 1133人参与
# 关于春招你都做了哪些准备? #
101696次浏览 666人参与
# 工作中,努力重要还是选择重要? #
139779次浏览 1703人参与