算法导论学习笔记--2--堆排序
来源:互联网 发布:sm2算法 编辑:程序博客网 时间:2024/05/16 23:51
package temp;
class Test {
public static void main(String[] args) {
int A[] = { 19, 1, 10, 14, 16, 4, 7, 9, 3, 2, 8, 5, 11 };
HeapSort(A, A.length);
}
/* 父結點 */
static int parent(int i) {
return (int) (i / 2);
}
/* 左子結點 */
static int left(int i) {
return 2 * i;
}
/* 右子結點 */
static int right(int i) {
return (2 * i + 1);
}
/* 跟踪某一节点,使他满足最大堆 */
static void Max_Heapify(int A[], int i, int heap_size) {
int l;
int r;
l = left(i) ;
r = right(i);
int largest;
int temp;
if (l < heap_size && A[l] > A[i]) {
largest = l;
} else {
largest = i;
}
if (r < heap_size && A[r] > A[largest]) {
largest = r;
}
if (largest != i) {
temp = A[i];
A[i] = A[largest];
A[largest] = temp;
Max_Heapify(A, largest, heap_size);
}
}
/* 建立最大堆积树 */
static void Build_Max_Heap(int A[]) {
for (int i = A.length / 2; i >= 0; i--) {
Max_Heapify(A, i, A.length);
}
}
/* 对堆积树排序 */
static void HeapSort(int A[], int heap_size) {
Build_Max_Heap(A);
int temp;
for (int i = heap_size - 1; i > 0; i--) {
temp = A[0];
A[0] = A[i];
A[i] = temp;
Max_Heapify(A, 0, i);
}
for (int i = 0; i < A.length; i++) {
System.out.print(A[i] + " ");
}
System.out.println();
}
}
- 算法导论学习笔记--2--堆排序
- 算法导论-堆排序学习笔记
- 堆排序-《算法导论》学习笔记六
- 算法导论学习笔记(一)排序算法之堆排序
- 算法导论笔记,堆排序
- 堆排序算法分析——《算法导论》学习笔记
- 《算法导论》学习笔记之一排序算法2--堆排序的 实现代码C++
- 算法学习导论学习笔记-第6章 堆排序
- 算法导论学习笔记-第六章-堆排序
- 算法导论学习笔记——堆排序
- 《算法导论》学习笔记--第六章 堆排序
- 算法导论学习笔记(1)---堆排序
- 算法导论学习笔记(三):堆排序
- 算法导论学习笔记之四--堆排序
- 算法导论学习笔记 第6章 堆排序
- 算法导论 学习笔记 第六章 堆排序
- 算法导论笔记之堆排序
- 算法导论笔记之----堆排序
- [编程珠玑]可变长位字符串的排序问题
- 贴片元件封装--SMT基础知识介绍
- Linux 命令大全
- 使用iOS系统中的编辑联系人界面,其中的思路值得借鉴(继承的思想)
- Java线程创建
- 算法导论学习笔记--2--堆排序
- mongo基本操作
- IntelliJ Idea导出javadoc乱码解决方案
- 面试题01 - 二叉树的镜像 【树】[ water ]
- 百度地图API使用
- C++之父文章1:How do I write this very simple program?
- 畅通工程续 最短路径 Dijkstra
- Linux 内核 Makefile 体系简单分析
- 地图中多个marker时分别显示信息窗口的方法