堆排序
2016-08-15 08:36
218 查看
public class HeapSortCls{ public HeapSortCls(int[] lst) { // TODO Auto-generated constructor stub this.lst = lst; this.len = lst.length; } public void createHeap(){ int startIndex = (lst.length -1)/2; //int startIndex = lst.length-1; for(int i=startIndex; i>=0; i--){ adjustHeap(i, lst.length-1); } } private void adjustHeap(int k, int lastIndex){ while(2*k+1 <= lastIndex){ int i = 2*k+1; if(2*k+2 <= lastIndex && lst[i] < lst[i+1]) i++; if(2*k+1 <= lastIndex && lst[k] <lst[i]) exch(k, i); k = i; } } public void heapSort(){ for (int i = lst.length-1; i >= 0 ; i--) { adjustHeap(0, i); exch(0, i); } } private void exch(int i, int j){ int tmp = lst[i]; lst[i] = lst[j]; lst[j] = tmp; } }
相关文章推荐
- 堆排序 && Kth Largest Element in an Array
- 排序算法--堆排序
- leecode 169. Majority Element(C语言,快速排序,堆排序,各类排序算法复杂度比较)22
- 算法记录:堆排序
- 选择排序(简单选择排序--改进的简单选择排序--堆排序)
- 堆及堆排序
- 堆排序
- 堆排序
- 堆排序
- 所谓堆和堆排序
- 直接选择排序到堆排序做的那些改进
- 堆排序
- 数据结构笔记————堆排序
- 想了两天,终于把堆排序搞懂了。
- 小白成长日记(11)--选择排序之堆排序
- 堆排序(Heap Sort)算法的实现
- 【基础算法】堆排序
- 插入 希尔 排序 堆排序 冒泡 快速 归并
- 快排、堆排序、插入法比较
- 常用算法总结之排序(六)----堆排序