堆排序 -- 算法小结
来源:互联网 发布:网络大电影播放量分红 编辑:程序博客网 时间:2024/06/04 19:17
对于一个int数组,请编写一个堆排序算法,对数组元素排序。
给定一个int数组A及数组的大小n,请返回排序后的数组。
测试样例:
[1,2,3,5,2,3],6
[1,2,2,3,3,5]
思路:首先以整个数组建一个大根堆,然后将根与最后一个结点交换,最后一个即有序,接着大根堆的大小-1,重新建立大根堆,重复上述过程 直至堆大小为1…..
import java.util.*;public class HeapSort { public int[] heapSort(int[] A, int n) { // write code here if(A==null||n<2){ return A; } buildHeap(A); //建堆 sort(A); //排序 return A; } public void buildHeap(int[] A){ for(int i=A.length/2-1;i>=0;i--){ buildMaxHeap(A,i,A.length-1); } } public void sort(int[] A){ for(int i=A.length-1;i>=0;i--){ change(A,0,i); buildMaxHeap(A,0,i-1); } } public void buildMaxHeap(int[] A,int i,int end){ int left = 2*i+1; int right = 2*i+2; int tem; if(left<=end&&A[left]>A[i]){ tem = left; }else tem = i; if(right<=end&&A[right]>A[tem]){ tem = right; } if(tem != i){ change(A,i,tem); buildMaxHeap(A,tem,end); } } public void change(int[] A,int a,int b){ if(a!=b){ int tem1= A[a]; A[a] = A[b]; A[b] = tem1; } }}
阅读全文
0 0
- 堆排序 -- 算法小结
- 算法之排序小结3---堆排序(Java)
- 堆排序小结
- 堆排序小结
- 堆排序 小结
- 堆排序小结
- 堆排序小结
- 算法入门---java语言实现的堆排序小结
- 排序算法--堆排序
- 排序算法-堆排序
- 排序算法---堆排序
- 【排序算法】堆排序
- 排序算法-堆排序
- 排序算法---堆排序
- 排序算法--堆排序
- 排序算法----堆排序
- 排序算法--堆排序
- 排序算法 堆排序
- (网易2018校招笔试)[编程题] 魔法币
- Makefile基础教程 5
- tomcat部署静态网页
- noip普及组2005 采药
- 为什么要使用事件委托?
- 堆排序 -- 算法小结
- 1451:幸运数字
- 如何安装 SQL Developer 和 SQL Plus
- OpenWrt的一些心得
- noip普及组2005 陶陶摘苹果
- 基于SSM实现的简易员工管理系统(基于阿里云的网站上线篇)
- JDBC基本使用
- 链表
- 23种设计模式(5)-适配器模式