java中实现堆排序的原理是什么

  介绍

本篇文章为大家展示了java中实现堆排序的原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

<强>堆是一个数组,被看成一个近似完全二叉树。

举例说明:

癹ava中实现堆排序的原理是什么” 癹ava中实现堆排序的原理是什么"

<强>堆的性质:

1。已知元素在数组中的序号为我

其父节点的序号为我/2的整数
其左孩子节点的序号为2 *我
其右孩子节点的序号为2 * i + 1

2。堆分为最大堆和最小堆

在最大堆中,要保证父节点的值大于等于其孩子节点的值
在最小堆中,要保证父节点的值小于等于其孩子节点的值

<强> java实现堆排序

public  class  MyHeapSort  {   public 才能;void  Heap_Sort (int [], A), {   ,,,/* *   ,,,,*,这个函数完成堆排序   ,,,,*,先构建一个最大的堆   ,,,,*,将数组中第一个元素和最后一个交换,   ,,,,*,堆的长度减一   ,,,,*,在从第一个位置开始保证堆的性质调用Max_heapify()函数。   ,,,,*,这样保证目前最大的元素在数组的最后位置。   ,,,,*,以此类推,直到最后一个元素。   ,,,*/,,,Build_Max_Heap(一个);   ,,,for  (int 小姐:=,A.length 作用;1;,小姐:祝辞=,1;,我——),{   ,,,,,int  temp =, [0];   ,,,,,一个[0],=,(我);   ,,,,,一个[我],=,温度;   ,,,,,Max_heapify (,, 0,, i);   ,,,}   ,,}   public 才能;void  Build_Max_Heap (int [], A), {   ,,,/* *   ,,,,*,这个函数用来构建堆   ,,,,*,答:待排序的数组   ,,,,,(对于循环中我的值从数组长度的一般开始取,是因为完全二叉树的性质,   ,,,,*,一半的节点叶根节点所以从叶节点开始向上遍历来保证堆的性质)   ,,,*/,,,for  (int 小姐:=,A.length/2,,小姐:祝辞=,0;,我——),{   ,,,,,Max_heapify(,,我,,A.length);   ,,,}   ,,}   public 才能;void  Max_heapify (int [],,, int 我,int  heap_size), {   ,,,/* *这个函数用来维护堆的性质,   ,,,,*,保证以序号为我的元素为根节点的子树中,父节点的值大于其孩子节点的值。   ,,,,*,答:待排序数组   ,,,,*,我:在数组一个中的序号   ,,,,*,heap_size:堆的大小   ,,,*/,,,int  largest =,我;   ,,,int  l =,小姐:*,2,+,1;   ,,,int  r =,小姐:*,2,+,2;   ,,,if  (l  & lt;, heap_size ,,,一个[l],祝辞,[我]),largest =, l;   ,,,if  (r  & lt;, heap_size ,,,一个[r],祝辞,(最大)),largest =, r;   ,,,if  (largest  !=, i), {   ,,,,,int  temp =,(我);   ,,,,,一个[我],=,(最大);   ,,,,,一个(最大的),=,温度;   ,,,,,Max_heapify(最大,,,,heap_size);   ,,,}   ,,}   public 才能;static  void  main (String [], args), throws  Exception  {   ,,,System.out.println(“测试结果:“);   ,,,int [], a =, new  int[]{1、3、2、5, 34岁,23日,44岁,15日,67年,45个};   ,,,new  MyHeapSort () .Heap_Sort(一个);   ,,,for  (int  x : a), System.out.println (x);   ,,}   }

代码中例子的运行结果:

癹ava中实现堆排序的原理是什么"

java是什么

java是一门面向对象编程语言,可以编写桌面应用程序,网络应用程序,分布式系统和嵌入式系统应用程序。

上述内容就是java中实现堆排序的原理是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

java中实现堆排序的原理是什么