堆排序
来源:互联网 发布:微信公众号淘宝返利 编辑:程序博客网 时间:2024/06/01 07:36
堆排序:不稳定,O(nlogn)
package datasort;//堆排序O(nlogn)public class HeapSort {public static void print(int[] array){for(int i=0;i<array.length;i++){System.out.print(array[i]+" ");}System.out.println();}public static void swap(int[] array,int index1,int index2){int temp=array[index1];array[index1]=array[index2];array[index2]=temp;}public static void main(String[] args) { int[] array = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3 }; System.out.println("Before heapSort:"); print(array); heapSort(array); System.out.println("After heapSort:"); print(array);}public static void heapSort(int[] array) {if (array == null || array.length <= 1) {return;}buildMaxHeap(array);for (int i = array.length - 1; i >= 1; i--) {swap(array, 0, i);maxHeap(array, i, 0);}}public static void buildMaxHeap(int[] array) {if (array == null || array.length <= 1) {return;}int half = array.length / 2;for (int i = half; i >= 0; i--) {maxHeap(array, array.length, i);}}private static void maxHeap(int[] array, int heapSize, int index) {int left = index * 2 + 1;int right = index * 2 + 2;int largest = index;if (left < heapSize && array[left] > array[index]) {largest = left;}if (right < heapSize && array[right] > array[largest]) {largest = right;}if (index != largest) {swap(array, index, largest);maxHeap(array, heapSize, largest);}}}
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- Python黑帽编程2.7 异常处理
- 打印本月的日期,
- OCUI初级——建立主窗口,程序生命周期
- MIT操作系统课程CS6.828实验(2) —— 实验工具指导
- dell3900机型安装xp64位操作系统
- 堆排序
- Android ImageView实现图片切换
- HDU 1711 KMP算法入门
- Maven新建webapp项目index.jsp报错
- 【牛客网】二进制中1的个数
- Hashmap为什么容量是2的幂次,什么是负载因子
- 远程计算机或设备将不接受连接,IE无法上网
- cocos2d判断精灵某点颜色是否有效
- linux安装jdk