123
来源:互联网 发布:网络安全教育开题报告 编辑:程序博客网 时间:2024/04/29 07:29
wangrui
sdfsdfds
堆排序
public class HeapSort{ public static void main(String[] args){ int[] array = {9,8,7,6,5,4,3,2,1}; heapSort(array); print(array); } public static void print(int[] array){ StringBuilder builder = new StringBuilder(); for(int index = 0; index < array.length; ++index){ builder.append(array[index]); if(index != array.length - 1){ builder.append(","); } } System.out.println(builder.toString()); } //序列中以位置为i的元素为根节点的子树不是堆,但是其左右子树都为堆,调整以i为根节点的子树使其成为堆 public static void adjust(int[] array, int length, int i){ int temp = array[i]; int j = 2 * i + 1; while(j < length){ if(j + 1 < length && array[j + 1] > array[j]){ j = j + 1; } if(array[j] <= temp){ break; } array[(j - 1)/2] = array[j]; j = j * 2 + 1; } array[(j - 1)/2] = temp; } //创建初始堆 //循环操作,将第一个元素与待排序的最后一个元素交互,然后再次调整为堆 public static void heapSort(int[] array){ int length = array.length; for(int i = (length - 1 - 1) / 2; i >= 0; --i){ adjust(array, length, i); } for(int i = length - 1; i >= 1; --i){ int temp = array[i]; array[i] = array[0]; array[0] = temp; adjust(array, i, 0); } }}
0 0
- 123
- 123
- 123
- 123
- 123
- 123
- 123
- 123
- 123
- 123
- 123
- 123
- 123
- 123
- 123
- 123
- 123
- 123
- 未来需要学习的技术
- 【分享笔记】android6.0特性
- ANDROID动态加载 使用SO库时要注意的一些问题
- Linux进程调度器概述--Linux进程的管理与调度(十五)
- 【剑指offer】斐波那契数列--递归及循环剖析
- 123
- OpenCV的所有模块介绍
- 数据库复习总结
- linux 服务器间copy 文件
- 办公软件Cnskype for business自动化系统的作用
- Contains Duplicate II 是否包含重复
- 关于mongoDB 失效数据 ttl ensureIndex
- HTTP原理之HTTP报文(1) 方法
- 阿里云服务器linux系统远程连接