打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
最大堆排序
package algorith;



public class Heap {

/**
* @param args
* 最大堆排序
*/
public static void main(String[] args) {
Heap h = new Heap ();
int[] a ={3,4,5,2,1,6,7};
h.initialization(a);
for(int b :a){
System.out.print(b+" ");
}
System.out.println();
h.sort(a);
for(int b :a){
System.out.print(b+" ");
}
}
public  void initialization(int[] array){
int len = array.length;
for(int i =len/2-1 ;i>=0;i--){
maxHeap(array,i,len);
}
}
public static void maxHeap(int[] array , int i ,int length){
int index = i ;
if((2*i+1 <=length-1 )&&(array[2*i+1]>array[i])){
index = 2*i+1;
}
if((2*i+2 <=length-1 )&&(array[2*i+2]>array[index])){
index = 2*i+2;
}
if(index != i){
swap(array,index,i);
maxHeap(array,index,length);
}
}
//把第一个值与最后一个交换,排除最后一个,对其他的树操作!
public void sort(int[] array){
int len = array.length;
for(int i = array.length-1; i>=0;i--){
swap(array,0,i);
len-=1;
maxHeap(array,0,len);
}
}
   
public static void swap(int[] array , int i , int j){
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
堆排序详解以及java实现
一步一步写算法(之堆排序)
还不会十大排序,是准备家里蹲吗
IT编程界的,十大排序,现在还不会你还玩个啥?
还不会十大排序,是准备家里蹲吗!?
九大排序算法的手写实现及时空复杂度分析 笔试面试必备
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服