博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最小堆的基础操作(Java)
阅读量:6991 次
发布时间:2019-06-27

本文共 1745 字,大约阅读时间需要 5 分钟。

1 public class test 2 { 3     public static void main(String[] args) 4     { 5         int[] array = new int[] {3,5,6,11,20,8,9,2,7}; 6         createMinimumHeap(array); 7         for(int value : array) 8             System.out.print(value + " "); 9         System.out.println();10         for(int i = 0; i < array.length; i++)11             System.out.print(extract_Min(array, array.length - i) + " ");12     }13     14     //1 建堆15     public static void createMinimumHeap(int[] array)16     {17         int k = array.length / 2 - 1;18         while(k >= 0)19         {20             Min_Heapify(array, k, array.length);21             k -= 1;22         }23     }24 25     //2 最小堆化26     public static void Min_Heapify(int[] array, int k, int size)27     {28         int min_index;29         while(k <= size / 2 - 1)30         {31             if(k * 2 + 2 >= size)32                 min_index = k * 2 + 1;33             else34                 min_index = array[k * 2 + 1] < array[k * 2 + 2] ? k * 2 + 1 : k * 2 + 2;35             if(array[k] > array[min_index])36             {37                 swap(array, k, min_index);38                 k = min_index;39             }40             else41                 break;42         }43     }44 45     //3 提取最小元素46     public static int extract_Min(int[] array, int size)47     {48         int key = array[0];49         array[0] = array[size - 1];50         //最小堆化51         Min_Heapify(array, 0, size - 1);52         return key;53     }54     55     //4 插入元素56     //将插入的元素放在数组最后 依次与其父亲结点进行比较 直到根结点57     58     public static void swap(int[] a, int i, int j)59     {60         int tmp = a[i];61         a[i] = a[j];62         a[j] = tmp;63     }64 }

 

转载于:https://www.cnblogs.com/Huayra/p/10874932.html

你可能感兴趣的文章
go:数组
查看>>
网站重构的理解
查看>>
PAT L1-043. 阅览室
查看>>
linux 命令与文件的查询
查看>>
MYSQL数据库引擎 MYISAM和 INNODB区别
查看>>
设计模式之原型模式
查看>>
BootStrap常用组件及响应式开发
查看>>
TS学习之for..of
查看>>
OpenGL是什么?
查看>>
Oracle - 数据库巡检脚本
查看>>
提高系统性能:从数据访问层开始
查看>>
【转】IOS开发小技巧
查看>>
ECMAScript 类型转换
查看>>
Java的垃圾回收机制
查看>>
SQL Server 2005 的各种版本所支持的功能
查看>>
Java面向对象之多态
查看>>
第一次接触HBuild
查看>>
逆推 Gym 101102J
查看>>
CF 675 div2C 数学 让环所有值变为0的最少操作数
查看>>
P1379 八数码naive题,STL的胜利
查看>>