关注
我也觉得有问题, 不过我的答案跟楼主也不同。。。附上我的答案:
好像牛客网目前有点小问题, 图片传不上来
我用数组的方式表示: 从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
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 2025年终总结 #
156908次浏览 2667人参与
# 你面试体验感最差/最好的公司 #
7967次浏览 152人参与
# 总结:哪家公司面试体验感最差 #
82888次浏览 387人参与
# 一人说一个提前实习的好处 #
5685次浏览 106人参与
# 重来一次,你会对开始求职的自己说 #
3943次浏览 99人参与
# 秋招落幕,你是He or Be #
5330次浏览 114人参与
# 大家实习每天都在干啥 #
105415次浏览 564人参与
# 实习没事做是福还是祸? #
10066次浏览 157人参与
# 比亚迪工作体验 #
71655次浏览 271人参与
# 团建是“福利”还是是 “渡劫” #
5025次浏览 127人参与
# 今年你最想重开的一场面试是? #
1886次浏览 30人参与
# 你小心翼翼的闯过多大的祸? #
8552次浏览 120人参与
# 工作中听到最受打击的一句话 #
3553次浏览 73人参与
# 大厂VS公务员你怎么选 #
72312次浏览 663人参与
# 如何排解工作中的焦虑 #
245463次浏览 2261人参与
# 高情商面试官评选 #
45854次浏览 257人参与
# 秋招结束之后的日子 #
114005次浏览 1044人参与
# 应届生进小公司有什么影响吗 #
109516次浏览 1118人参与
# 实习简历求拷打 #
32952次浏览 317人参与
# 哪些瞬间让你真切感受到了工作的乐趣 #
20463次浏览 86人参与
