西柚社区
搜索
百度
校园热点
login
堆排序
作者:
闲乘月
| 发布时间:
02: 05 23/11/2020
| 阅读数:
10
### 堆排序 ##### 一、数组堆化 - 实现: ```java private void swap(int[] array, int i, int j) { int temp = array[i]; array[i] = array[j]; array[j] = temp; } public void heapify(int[] array, int n, int i) { if (i >= n) { return; } int left = 2 * i + 1; int right = 2 * i + 2; int parent = i; if (left < n && array[left] > array[parent]) { parent = left; } if (right < n && array[right] > array[parent]) { parent = right; } if (parent != i) { swap(array, parent, i); heapify(array, n, parent); } } public void build_heap(int[] array, int n) { int last = n - 1; int parent = (last - 1) / 2; for (int i = parent; i >= 0; i--) { heapify(array, n, i); } } ``` ##### 二、堆排序 - 实现: - ```Java public void heap_sort(int[] array,int n){ build_heap(array, n); int i; for (i=n-1;i>=0;i--){ swap(array,i,0); heapify(array,i,0); } } ```
java
共
0
个回复
添加文章评论
游客
回复
发起人
闲乘月
生日:
06: 49 19/11/2020
推荐
相关问题
反射
正则表达式
必备知识点
异常处理
砍树计划