堆排序
来源:互联网 发布:大数据用到哪些数据库 编辑:程序博客网 时间:2024/05/20 18:43
public class HeapSort { public static void main(String[] args) { int[] array = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3 }; heapSort(array); for(int a : array){ System.out.println(a); } } /** * 堆排序 * @param array */ public static void heapSort(int array[]){ if(array==null || array.length<=1){ return; } buildMaxHeap(array); for(int i = array.length-1;i>=0;i--){ swap(array,0,i); maxHeap(array,i,0); } } /** * 构建最大堆 * @param array */ public static void buildMaxHeap(int array[]){ if(array==null || array.length<=1){ return; } for(int i = (array.length/2);i>=0;i--){ maxHeap(array,array.length,i); } } /** * 维护最大堆 * @param array * @param heapSize * @param index */ public static void maxHeap(int array[],int heapSize,int index){ int leftChild = 2*index+1; int rightChild = 2*index+2; int largest = index; if( leftChild < heapSize&&array[leftChild] > array[index] ){ largest = leftChild; } if(rightChild < heapSize && array[rightChild] > array[largest] ){ largest = rightChild; } if(largest != index){ swap(array, largest, index); maxHeap(array, heapSize, largest); } } public static void swap(int array[],int i,int j){ int temp = array[i]; array[i] = array[j]; array[j] = temp; }}
阅读全文
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- QImage与IplImage之间转换的实现
- Spring异常之BeanDefinitionStoreException
- iOS OpenGL ES 研究二:OpenGL ES绘制图形精华
- python3的scrapy基础讲解
- 非对称加密RSA和对称加密AES,没你想象的那么神秘
- 堆排序
- Shiro整合Web笔记
- QT循环队列实时处理数据(二)
- LTE网络架构
- OpenGL蓝宝书源码学习(二)第二章——Move.cpp
- TortoiseCVS安装使用详解
- LeetCoder 20. Valid Parentheses
- QTP描述性编程简介与Java CS程序实例
- 实验七:项目二学生类