堆排序
来源:互联网 发布:vb开发彩票软件教程 编辑:程序博客网 时间:2024/05/13 12:24
/** * 堆排序 * * @param a * */public static void heapSort(int[] a) {for (int i = (a.length - 2) / 2; i >= 0; i--) { // 从最后一个非叶子节点开始初始化堆adjustHeap(a, a.length, i);}int[] tmp = new int[a.length];for (int i = 0; i < a.length; i++) { // 输出堆tmp[i] = a[0];swap(a, 0, a.length - 1 - i); // 最后一个节点交换到第一个节点adjustHeap(a, a.length - i - 1, 0); // 调整堆,同时堆的大小减小了}System.arraycopy(tmp, 0, a, 0, a.length);}private static void adjustHeap(int[] a, int n, int k) { // 调整堆int k1 = k * 2 + 1;int k2 = k * 2 + 2;if (k2 < n) {if (a[k] > a[k2]) {swap(a, k, k2);adjustHeap(a, n, k2);}}if (k1 < n) {if (a[k] > a[k1]) {swap(a, k, k1);adjustHeap(a, n, k1);}} else {return;}}
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- 指针数组的初始化之返回第n个月份的名字(内部static数组的一种应用)
- linux常用命令收集
- Atitit.研发管理--提升效率--软件开发方法DSM总结o99
- 《离散数学》2014第一周作业——组队、预习与作业
- 优秀的案例网站
- 堆排序
- PAT(A) 101-116-2-2014-09-06
- wait与notifyAll实现简单的生产者消费者模式
- 黑马程序员—C语言—从零开始
- atitit.表格的绑定client side 最佳实践
- mac 下PyCharm不能创建Django工程得问题
- Binary Tree Preorder Traversal
- 插入排序
- Atitit. js mvc 总结(2)----angular 跟 Knockout o99 最佳实践