建立最大堆—数组—Java
来源:互联网 发布:java微信退款接口开发 编辑:程序博客网 时间:2024/05/21 21:36
public class BuildMaxHeap
{
public static void MaxHeapify(int[] a, int i)
{
int largest = 0;
int l = i << 1;
int r = (i << 1) + 1;
if (l < a.length && a[l] > a[i])
{
largest = l;
}
else{
largest = i;
}
if (r < a.length && a[r] > a[largest])
{
largest = r;
}
if (largest != i)
{
int tmp = a[i];
a[i] = a[largest];
a[largest] = tmp;
MaxHeapify(a, largest);
}
}
public static void BuildMaxHeap(int[] a)
{
for (int i = (a.length-1) / 2 ; i > 0; --i)
{
MaxHeapify(a, i);
}
}
public static void main(String[] args)
{
int[] a = {0, 4, 1, 3, 2, 16, 9, 10, 14, 8, 7};
BuildMaxHeap(a);
for (int tmp : a)
{
System.out.println(tmp);
}
}
}
得注意数组第一个元素必须从下标1开始,故数组0号下标用其他的书填充。
{
public static void MaxHeapify(int[] a, int i)
{
int largest = 0;
int l = i << 1;
int r = (i << 1) + 1;
if (l < a.length && a[l] > a[i])
{
largest = l;
}
else{
largest = i;
}
if (r < a.length && a[r] > a[largest])
{
largest = r;
}
if (largest != i)
{
int tmp = a[i];
a[i] = a[largest];
a[largest] = tmp;
MaxHeapify(a, largest);
}
}
public static void BuildMaxHeap(int[] a)
{
for (int i = (a.length-1) / 2 ; i > 0; --i)
{
MaxHeapify(a, i);
}
}
public static void main(String[] args)
{
int[] a = {0, 4, 1, 3, 2, 16, 9, 10, 14, 8, 7};
BuildMaxHeap(a);
for (int tmp : a)
{
System.out.println(tmp);
}
}
}
得注意数组第一个元素必须从下标1开始,故数组0号下标用其他的书填充。
0 0
- 建立最大堆—数组—Java
- 如何根据一个数组建立最大堆
- 树的应用——最大堆的建立
- 最大堆的建立
- 建立最大堆
- 最大堆的建立和堆排序
- 最大堆最小堆的建立
- 堆排序和建立最大堆
- 堆结构——最大堆
- 最大二叉堆的建立以及最大堆排序
- Java最大堆排序
- java最大堆
- Java 实现最大堆
- 最大堆java实现
- 插入法建立一个最大堆
- c++使用vector建立最大堆和最小堆
- C++中使用vector建立最大堆和最小堆
- 【堆】这是要搞事情啊——建立
- git send-mail发送patches配置(linux环境,使用Gmail)
- OpenCV Intro - Back Projection
- SunCertPathBuilderException: Unable To Find Valid Certification Path To Requested Target
- Android选择本地图片过大程序停止的总结
- Machine Learning - XIII. Clustering聚类 (Week 8)
- 建立最大堆—数组—Java
- java中PriorityQueue优先级队列使用方法
- 使得公司的根深蒂固
- 利用Objective-C的反射机制和运行时特性实现类静态方法的动态访问(二)
- linux下iwconfig结果中的wlan1修改为wlan0
- 字符集转化/curses
- JAVA发送http(s)请求
- IOS开发之----两种保存用户名和密码实现记住密码库
- 关于kernel32基地址获取