堆排序
来源:互联网 发布:psv破解软件下载 编辑:程序博客网 时间:2024/06/06 12:47
/** * TODO 维护最大堆 * @param arr * @param i * @param length */ private static void maxHeapify(int[] arr,int i,int length){int leftIndex = 2*i+1;int rightIndex = 2*(i+1);int largestIndex = i;if(leftIndex<length && arr[i]<arr[leftIndex]){ largestIndex = leftIndex;}if(rightIndex<length && arr[largestIndex]<arr[rightIndex]){ largestIndex = rightIndex;}if(largestIndex!=i){ swap(arr,i,largestIndex); maxHeapify(arr,largestIndex,length);} } /** * TODO 交换两个数据的值 * @param arr * @param i * @param largestIndex */ private static void swap(int[] arr, int i, int largestIndex) {int temp = arr[i];arr[i] = arr[largestIndex];arr[largestIndex] = temp; } /** * TODO 建堆 * @param arr */ private static void buildMaxHeap(int[] arr){for(int i=arr.length/2-1;i>=0;i--){ maxHeapify(arr,i,arr.length);} } /** * TODO 排序 * @param arr */ public static void heapSort(int[] arr){buildMaxHeap(arr);for(int i=arr.length-1;i>0;i--){ swap(arr,i,0); maxHeapify(arr,0,i);} }
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- php区分大小写
- 劝学
- C语言小结
- C语言_字符和字符串
- 硬件检测:安装、停用
- 堆排序
- IOS应用开发15——UITableView多选删除及样式自定
- Spring 3之MVC & Security简单整合开发(二)
- 探究AFNetworking的使用
- 操作系统 - 虚拟存储管理技术之虚拟页式存储管理
- [ASP.NET]从Request.Url获取根网址的最简单方法
- VC++开发VLC视频播放器的小问题——libvlc_new()返回空置的问题
- 浅析Android权限机制(一) —— Android的权限机制
- 【黑马程序员】黑马入学准备篇:Java高新技术之 注解