堆排序
来源:互联网 发布:unity3d 安卓包调试 编辑:程序博客网 时间:2024/05/22 21:00
介绍太麻烦了-.-!直接上代码...
package sort;public class HeapSort {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint a[] = {4,1,3,2,16,9,10,14,8,7};for(int i = 0; i < a.length; i ++){System.out.print(a[i] + ".");}HeapSort h = new HeapSort();h.HEAPSORT(a);System.out.println();for(int i = 0; i < a.length; i ++){System.out.print(a[i] + ".");}}public int parent(int i){ //父节点return (i - 1)/2;}public int left(int i){ //左孩子return i * 2 + 1;}public int right(int i){ //右孩子return i * 2 + 2;}public void swap(int a[], int i, int j){int temp;temp = a[i];a[i] = a[j];a[j] = temp;}public void MAX_HEAPIFY(int a[], int i, int heapsize){ //最大堆调整int l = left(i);int r = right(i);int largest;if(l < heapsize && a[l] > a[i])largest = l;else largest = i;if(r < heapsize && a[r] > a[largest])largest = r;if(largest != i){swap(a, i, largest);MAX_HEAPIFY(a, largest, heapsize);}}public void BUILD_MAX_HEAP(int a[], int heapsize){ //建最大堆for(int i = a.length / 2 - 1; i >= 0; i --)MAX_HEAPIFY(a, i, heapsize);}public void HEAPSORT(int a[]){ //堆排序int heapsize = a.length ;BUILD_MAX_HEAP(a, heapsize);for(int i = a.length - 1; i >= 1; i --){swap(a, 0, i);heapsize --;MAX_HEAPIFY(a, 0, heapsize);}}}
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- python -----example
- 冒泡排序
- NYOJ 136 等式
- 插入排序
- 归并排序
- 堆排序
- javascript学习笔记
- 将博客搬至CSDN
- cocos2dx CCControlSwitch
- bvnc
- 区分依赖,关联和聚集关系
- 黑马程序员-java基础02
- eclipse调试的时候总是进入.class文件(例如:ClassLoad.class)
- TCP/IP的分层