经典排序之堆排序
来源:互联网 发布:数据共享交换平台 编辑:程序博客网 时间:2024/06/14 03:46
堆排序,想必大家已经很熟悉,下面贴代码。
public class HeapSort {public void heapSort(int[] a){for(int i=a.length/2-1;i>=0;i--){adjustHeap(a,i,a.length);//建堆}for(int i=a.length-1;i>0;i--){swap(a, 0, i);//把最大元素放到最后,再次建堆时不参与adjustHeap(a,0,i);//再次建堆}}//调整成堆public void adjustHeap(int[] a,int i,int length){int child = 0;int max;//从开始元素,从上到下依次进行调整。for(max=a[i];leftChild(i)<length;i=child){child=leftChild(i);if(child!=length-1 && a[child]<a[child+1]){child++;}if(max<a[child]){a[i]=a[child];}else break;}a[i]=max;}//左孩子的下标public int leftChild(int i){return 2*i+1;}//把最大元素依次放到最后,就是个交换public void swap(int a[],int start,int max){int temp=0;temp=a[start];a[start]=a[max];a[max]=temp;}//堆排序的测试public static void main(String[] args){ int a[]={1,10,7,3,6,4,2,8}; HeapSort heapSort=new HeapSort(); heapSort.heapSort(a); for(int i=0;i<a.length;i++){ System.out.println(a[i]); }}}
输出结果
1 2 3 4 6 7 8 10
代码很简单,不过堆排序的思想值得人深思。
0 0
- 经典排序之堆排序
- 经典排序之堆排序
- 经典排序之堆排序
- 经典排序 之 堆排
- 经典算法之堆排序
- 经典排序算法之堆排序
- 经典排序算法之:堆排序
- 经典排序算法之堆排序
- 经典算法之堆与堆排序
- 经典算法之堆排序算法
- 经典算法之四:堆排序
- 数据结构经典排序---堆排序
- 【经典算法】堆排序
- 堆排序 经典代码
- 经典算法:堆排序
- 排序之堆排序
- 排序之堆排序
- 排序之堆排序
- 对结构体多级排序
- SIFT算法详解
- 软考-计算机组成原理、体系机构与网络安全
- hdu 2150 Pipe
- 需要阅读的经典管理书籍
- 经典排序之堆排序
- C++内存管理
- poj1269-Intersecting Lines(求线段交点)
- 树状数组专题
- Delphi 通过IConnectionPointContainer响应COM事件的例子,Internet Explorer 事件响应
- 程序运行过程中的各个寄存器!
- Eclipse 中 显示代码的行号
- 最新的Android SDK安装攻略(动作要快,来晚就失效了)
- 武道释义 · 零散