JAVA排序算法实现代码-堆(Heap)排序
来源:互联网 发布:gdb调试java 编辑:程序博客网 时间:2024/04/29 11:12
JAVA排序算法实现代码-堆(Heap)排序
- /**
- * JAVA排序算法实现代码-堆(Heap)排序。
- *
- * @author 老紫竹 JAVA世纪网(java2000.net)
- *
- */
- public class Test {
- public static int[] Heap = { 10, 32, 1, 9, 5, 7, 12, 0, 4, 3 }; // 预设数据数组
- public static void main(String args[]) {
- int i; // 循环计数变量
- int Index = Heap.length; // 数据索引变量
- System.out.print("排序前: ");
- for (i = 1; i < Index - 1; i++)
- System.out.printf("%3s", Heap[i]);
- System.out.println("");
- HeapSort(Index - 2); // 堆排序
- System.out.print("排序后: ");
- for (i = 1; i < Index - 1; i++)
- System.out.printf("%3s", Heap[i]);
- System.out.println("");
- }
- /**
- * 建立堆
- */
- public static void CreateHeap(int Root, int Index) {
- int i, j; // 循环计数变量
- int Temp; // 暂存变量
- int Finish; // 判断堆是否建立完成
- j = 2 * Root; // 子节点的Index
- Temp = Heap[Root]; // 暂存Heap的Root 值
- Finish = 0; // 预设堆建立尚未完成
- while (j <= Index && Finish == 0) {
- if (j < Index) // 找最大的子节点
- if (Heap[j] < Heap[j + 1])
- j++;
- if (Temp >= Heap[j])
- Finish = 1; // 堆建立完成
- else {
- Heap[j / 2] = Heap[j]; // 父节点 = 目前节点
- j = 2 * j;
- }
- }
- Heap[j / 2] = Temp; // 父节点 = Root值
- }
- public static void HeapSort(int Index) {
- int i, j, Temp;
- // 将二叉树转成Heap
- for (i = (Index / 2); i >= 1; i--)
- CreateHeap(i, Index);
- // 开始进行堆排序
- for (i = Index - 1; i >= 1; i--) {
- Temp = Heap[i + 1]; // Heap的Root值和最后一个值交换
- Heap[i + 1] = Heap[1];
- Heap[1] = Temp;
- CreateHeap(1, i); // 对其余数值重建堆
- System.out.print("排序中: ");
- for (j = 1; j <= Index; j++)
- System.out.printf("%3s",Heap[j]);
- System.out.println("");
- }
- }
- }
运行结果
排序前: 32 1 9 5 7 12 0 4
排序中: 12 7 9 5 1 4 0 32
排序中: 9 7 4 5 1 0 12 32
排序中: 7 5 4 0 1 9 12 32
排序中: 5 1 4 0 7 9 12 32
排序中: 4 1 0 5 7 9 12 32
排序中: 1 0 4 5 7 9 12 32
排序中: 0 1 4 5 7 9 12 32
排序后: 0 1 4 5 7 9 12 32
- JAVA排序算法实现代码-堆(Heap)排序
- heap sort algorithm 堆排序算法 java实现
- 堆排序算法(Heap Sort) Java实现
- 堆(heap)排序算法
- 堆排序(Heap Sort)算法的实现
- 堆排序(Heap Sort)算法的实现
- PHP实现排序算法----堆排序(Heap Sort)
- 堆排序算法代码实现
- [Java--常见排序算法]------堆排序 (Heap Sort)
- 堆(Heap)排序算法
- 算法----堆排序(heap sort)
- 排序算法之堆(heap)
- C实现heap堆排序
- 堆排序java代码实现
- 经典排序算法 - 堆排序Heap sort
- 经典排序算法 - 堆排序Heap sort
- 经典排序算法 - 堆排序Heap sort
- 经典排序算法 - 堆排序Heap sort
- 《Effective in java》 读书笔记
- JAVA排序算法实现代码-快速(Quick Sort)排序
- 爱你的人在等待~~~
- 生命的特度
- c# foreach语句循环取各对象
- JAVA排序算法实现代码-堆(Heap)排序
- [ZT]泛化,关联,聚合,合成,依赖的关系
- JAVA排序算法实现代码-选择(Select)式排序
- JAVA排序算法实现代码-二叉树排序
- 存储过程——天使还是魔鬼
- vs2008中的源代码管理
- JAVA排序算法实现代码-希尔Shell排序
- (MS SQL)如何实现相关文章功能(多关键字匹配)改进版
- .NET连接ORACLE数据库的字符串