全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

java 实现最小二叉树堆排序的实例

java 实现最小二叉堆排序的实例

写在前面:

一觉醒来,我就突然有灵感了......

最小二叉堆定义:

二叉堆是完全二元树或者是近似完全二元树,最小二叉堆是父结点的键值总是小于或等于任何一个子节点的键值的堆堆。

存储:

二叉堆一般用数组来表示。

根节点在数组中的位置是0,第n个位置的子节点分别在2n+1和 2n+2;

位置k的叶子的父节点位置为(k-1)/2;

实现:

/** 
 * @description 元素添加到末尾,和它的父节点比,如果比它小就交换 
 * @param array 
 * 
 * @author LynnWong 
 */ 
private int[] getMinBinaryHeap(int[] array){ 
  int N = array.length; 
  int minBinaryHeap[] = new int[N]; 
  int root;//根的值 
  int heapSize = 0;//记录插入位置 
  for(int num : array){ 
    minBinaryHeap[heapSize]=num; 
    ++heapSize; 
    int pointer = heapSize-1;//当前指向的数组元素位置 
    while(pointer!=0){ 
      int leafPointer = pointer;//叶子节点位置 
      pointer = (pointer-1)/2;//根节点位置 
      root = minBinaryHeap[pointer];//根节点 
      if(num>=minBinaryHeap[pointer]){//永远把当前数组元素看成叶子与其根比较或者换位 
        break; 
      }//如果根比叶子大 就交换位置 
      minBinaryHeap[pointer] = num; 
      minBinaryHeap[leafPointer] = root; 
       
    } 
  } 
  return minBinaryHeap; 
   
} 

/*** 
 * 用随机数测试二叉堆排序 
 * 测试10遍,强迫症似的变态... 
 */ 
public void text(){ 
  for(int i=0;i<10;i++){ 
    Random rnd = new Random();  
    int [] lala = {rnd.nextInt(6),rnd.nextInt(6),rnd.nextInt(6),rnd.nextInt(6),rnd.nextInt(6),rnd.nextInt(6)}; 
    System.out.print("输入:"); 
    for(int a : lala){ 
      System.out.print(a+" "); 
    } 
    System.out.println(); 
    int []array = this.getMinBinaryHeap(lala); 
    System.out.print("输出:"); 
    for(int a : array){ 
      System.out.print(a+" "); 
    } 
    System.out.println(); 
  } 
} 


如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# java  # 实现最小二叉树与堆排序  # 二叉树及堆排序  # C语言植物大战数据结构二叉树堆  # C++中二叉堆排序详解  # 小二  # 键值  # 我就  # 随机数  # 如有  # 希望能  # 堆堆  # 或者是  # 任何一个  # 谢谢大家  # 组中  # 疑问请  # 强迫症  # 写在前面  # 分别在  # param  # brush  # description  # LynnWong  # private 


相关文章: 无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  建站之星图片链接生成指南:自助建站与智能设计教程  建站之星官网登录失败?如何快速解决?  实现虚拟支付需哪些建站技术支撑?  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  如何选择美橙互联多站合一建站方案?  建站主机如何安装配置?新手必看操作指南  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  如何在IIS7上新建站点并设置安全权限?  已有域名如何快速搭建专属网站?  建站之星后台密码遗忘或太弱?如何重置与强化?  定制建站流程解析:需求评估与SEO优化功能开发指南  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  如何使用Golang table-driven基准测试_多组数据测量函数效率  如何在搬瓦工VPS快速搭建网站?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  ,柠檬视频怎样兑换vip?  宝塔建站助手安装配置与建站模板使用全流程解析  如何选购建站域名与空间?自助平台全解析  如何基于云服务器快速搭建网站及云盘系统?  ,巨量百应是干嘛的?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  如何选择建站程序?包含哪些必备功能与类型?  东莞专业制作网站的公司,东莞大学生网的网址是什么?  音乐网站服务器如何优化API响应速度?  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  如何快速搭建高效简练网站?  Python文件管理规范_工程实践说明【指导】  如何在云服务器上快速搭建个人网站?  网站制作话术技巧,网站推广做的好怎么话术?  建站主机是否属于云主机类型?  建站之星Pro快速搭建教程:模板选择与功能配置指南  如何通过智能用户系统一键生成高效建站方案?  大连网站设计制作招聘信息,大连投诉网站有哪些?  利用JavaScript实现拖拽改变元素大小  如何高效利用200m空间完成建站?  建站与域名管理如何高效结合?  如何用y主机助手快速搭建网站?  公司门户网站制作流程,华为官网怎么做?  如何通过可视化优化提升建站效果?  如何快速启动建站代理加盟业务?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  如何用虚拟主机快速搭建网站?详细步骤解析  网站制作报价单模板图片,小松挖机官方网站报价?  如何零基础在云服务器搭建WordPress站点?  如何用腾讯建站主机快速创建免费网站?  电商平台网站制作流程,电商网站如何制作? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。