Java十大排序算法之堆排序

Java十大排序算法之堆排序1、概念堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点

大家好,欢迎来到IT知识分享网。

1、概念

堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。

2、基本思想

  1. 创建一个堆 H[0……n-1];
  2. 把堆首(最大值)和堆尾互换;
  3. 把堆的尺寸缩小 1,并调用 shift_down(0),目的是把新的数组顶端数据调整到相应位置;
  4. 重复步骤 2,直到堆的尺寸为 1。

3、代码实现

public static void heapsort(int[] a) { int len = a.length; //构建堆 for(int i = len / 2 - 1;i >= 0 ;i-- ) { heapadjust(a,i,len - 1); } for(int j=len -1;j>0;j--) { int temp = a[0]; a[0] = a[j]; a[j] = temp; heapadjust(a,0,j-1); } } public static void heapadjust(int[] a,int pos,int len) { int child = 2 * pos + 1; int tmp = a[pos]; while(child <= len) { if(child <len && a[child] < a[child + 1]) { child ++; } if(a[child] >tmp) { a[pos] = a[child]; pos = child; child = 2*pos + 1; } else { break; } } a[pos] = tmp; } public static void main(String[] args) { int[] array ={3,44,38,5,47,15,36,26,27,2,46,4,19,50,48}; for(int i : array) { System.out.print(i + " "); } heapsort(array); System.out.println(); for(int i = 0;i<array.length;i++) { System.out.print(array[i] + " " ); } }

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/57323.html

(0)
上一篇 2024-07-12 20:26
下一篇 2024-07-13 15:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信