java堆排序算法的原理和作用

  介绍

这篇文章主要介绍“java堆排序算法的原理和作用”,在日常操作中,相信很多人在java堆排序算法的原理和作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“java堆排序算法的原理和作用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1,定义

,,,由下图(网上找的),堆排序类似这种,把最大的数字放到最下面的最右面位置,然后把第二大的数字放到最下层的最右面倒数第二个位置,依此类推,如下:

,,,,,,,,,,,,,癹ava堆排序算法的原理和作用“,

,,,,,,,,,,,,癹ava堆排序算法的原理和作用“

2代码
 public  class  TestController  {
  
  ,,,public  static  void  main (String [], args), {
  ,,,,,,,int [], nums =,{16、7、3、20日17日8};
  ,,,,,,,headSort (num);
  ,,,,,,,System.out.println(“结果为:“,+,Arrays.toString (num));
  ,,,}
  
  
  ,,,/* *
  ,,,,*,堆排序
  ,,,*/,,,public  static  void  headSort (int[],列表),{
  ,,,,,,,//,构造初始堆,从第一个非叶子节点开始调整,左右孩子节点中较大的交换到父节点中
  ,,,,,,,for  (int 小姐:=,(list.length),/, 2,安康;1;,小姐:祝辞=,0;,我——),{
  ,,,,,,,,,,,headAdjust(列表,list.length,, i);
  ,,,,,,,}
  ,,,,,,,//,排的序,将最大的节点放在堆尾,然后从根节点重新调整
  ,,,,,,,for  (int 小姐:=,list.length 作用;1;,小姐:祝辞=,1;,我——),{
  ,,,,,,,,,,,int  temp =,列表[0];
  ,,,,,,,,,,,名单[0],=,列表(我);
  ,,,,,,,,,,,(我)列表,=,温度;
  ,,,,,,,,,,,headAdjust(列表,,我,,0);
  ,,,,,,,}
  ,,,}
  
  ,,,private  static  void  headAdjust (int[],列表,int  len,, int  i), {
  ,,,,,,,int  k =,我,,temp =,[我],列表,index =, 2, *, k  +, 1;
  ,,,,,,,while  (index  & lt;, len), {
  ,,,,,,,,,,,if  (index  +, 1, & lt;, len), {
  ,,,,,,,,,,,,,,,if (列表(指数),& lt;,列表(index  +, - 1)), {
  ,,,,,,,,,,,,,,,,,,,index =, index  +, 1;
  ,,,,,,,,,,,,,,,}
  ,,,,,,,,,,,}
  ,,,,,,,,,,,if (列表(指数),祝辞,临时),{
  ,,,,,,,,,,,,,,,名单[k],=,列表(指数);
  ,,,,,,,,,,,,,,,k =,指数;
  ,,,,,,,,,,,,,,,index =, 2, *, k  +, 1;
  ,,,,,,,,,,,},{else 
  ,,,,,,,,,,,,,,,休息;
  ,,,,,,,,,,,}
  ,,,,,,,}
  ,,,,,,,名单[k],=,温度;
  ,,,}
  }
3,结果
<>之前结果为:[3,7日,8日,16日,17日,20)

到此,关于“java堆排序算法的原理和作用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

java堆排序算法的原理和作用