介绍
这篇文章主要介绍“java堆排序算法的原理和作用”,在日常操作中,相信很多人在java堆排序算法的原理和作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“java堆排序算法的原理和作用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
1,定义
,,,由下图(网上找的),堆排序类似这种,把最大的数字放到最下面的最右面位置,然后把第二大的数字放到最下层的最右面倒数第二个位置,依此类推,如下:
,,,,,,,,,,,,,,
,,,,,,,,,,,,
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堆排序算法的原理和作用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!