基于Java实现堆排序
2018-03-13 22:18
225 查看
堆排序
public static void heapSort(int[] arr) { if (arr == null || arr.length < 2) { return; } for (int i = 0; i < arr.length; i++) { heapInsert(arr, i); } int size = arr.length; swap(arr, 0, --size); //0号位置的元素最大,换到最后.siez-1 while (size > 0) { heapify(arr, 0, size); swap(arr, 0, --size); } } //建成大头堆,从下往上调 public static void heapInsert(int[] arr, int index) { while(arr[index] > arr[(index - 1) / 2] ){ swap(arr,index,(index - 1) / 2); index = (index - 1) / 2; } } //从上往下调 public static void heapify(int[] arr, int index, int size) { int left = index * 2 + 1; while(left < size){ int largest = left + 1 < size && arr[left + 1] > arr[left] ? left + 1 : left; largest = arr[index] > arr[largest] ? index : largest; if(largest == index){ break; } swap(arr,largest,index); index = largest; left = index * 2 + 1; } } public static void swap(int[] arr, int i, int j) { int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; }
相关文章推荐
- 用java实现一个基于堆排序的优先队列
- 基于堆排序实现的找出N个数据的前M大数据之Java实现
- 基于堆排序实现的找出N个数据的前M大数据之Java实现
- 利用Java技术实现基于XML的Web服务
- 基于JAVA技术的搜索引擎的研究与实现
- 基于JAVA技术的搜索引擎的研究与实现
- 基于JAVA技术的搜索引擎的研究与实现
- Java 与 .NET 的基于 WS-Security的Web Services集成实现(下)
- 基于JAVA技术的搜索引擎的研究与实现
- 基于JAVA技术的搜索引擎的研究与实现
- 基于Java技术的Web环境下分布式数据库互操作性的实现
- 用Java实现基于CORBA的自动负载均衡
- Ajax - JavaScript之实现私有属性、像C++和Java一样支持基于类的继承方法之例子
- 一个基于Winform+Java WebService的实现
- 基于JAVA技术的搜索引擎的研究与实现
- 用Java实现基于SOAP的XML文档网络传输及远程过程调用(RPC)
- Java.NET --一个基于Java的Microsoft.NET框架的实现
- 基于JAVA技术的搜索引擎的研究与实现
- Java中实现基于Aspectwerkz的AOP开发
- 基于Java实现Http服务器之二