关闭页面特效

堆排序代码实现(Java实现)

堆排序最重要的一点是将初始的无序堆转换成大顶堆或者是小顶堆;见代码:

复制代码
1 package dataSrtuct.TreeAlgorithm; 2 3 import java.util.Arrays; 4 5 public class HeapSort { 6 public static void main(String[] args) { 7 int[] arr={4,6,8,5,9}; 8 //此时已经成大顶堆的形式 9 for (int i = arr.length/2-1; i >=0 ; i--) { 10 //从最后一个非叶子节点调整 11 adjustHeap(arr,i, arr.length); 12 } 13 for (int i = arr.length-1; i >=0 ; i--) { 14 int temp=arr[i]; 15 arr[i]=arr[0]; 16 arr[0]=temp; 17 adjustHeap(arr,0, i); 18 } 19 System.out.println(Arrays.toString(arr)); 20 } 21 /** 22 * 来进行大顶堆的的局部调整 23 * @param arr 待调整的数组 24 * @param i 当前的非叶子节点 25 * @param length 待调整的数组的长度 26 */ 27 public static void adjustHeap(int[] arr,int i,int length){ 28 //临时的报错当前非叶子节点的位置 29 int temp=arr[i]; 30 //将所有层的左右子节点进行比较,判断并得到最大值 31 for (int j = i*2+1; j < length; j=j*2+1) { 32 if(j+1<length&&(arr[j]<arr[j+1])) 33 j++; 34 if (arr[j]>temp){ 35 //取最大值 36 arr[i]=arr[j]; 37 //指向最大值下标,继续往下找最大值 38 i=j; 39 } 40 else 41 break; 42 } 43 arr[i]=temp; 44 } 45 }
复制代码

 


__EOF__

作  者Mexcellent
出  处https://www.cnblogs.com/Mexcellent/p/17410080.html
关于博主:编程路上的小学生,热爱技术,喜欢专研。评论和私信会在第一时间回复。或者直接私信我。
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!

posted @   Mexcellent  阅读(96)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
0
0
已关注
跳至底部
点击右上角即可分享
微信分享提示