Java 堆排序算法
2010-02-21 00:36
162 查看
/** * 堆排序 * * */ public void heapSort(double[] a){ double temp; initCreateHeap(a); for(int i = a.length - 1; i > 0; i --){ temp = a[0]; a[0] = a[i]; a[i] = temp; createHeap(a, i, 0); } } /** * 将数组看成完全二叉树,建立最大堆 * */ private void initCreateHeap(double[] a){ for(int i = (a.length-1)/2; i >= 0; i --){ createHeap(a, a.length,i); } } private void createHeap(double[] a,int n ,int p){ int a1inum = 2 * p + 1; boolean currentIsMax = false; double temp = a[p]; while(a1inum < n && !currentIsMax){ if(a1inum < n -1 && a[a1inum] < a[a1inum+1]){ a1inum ++;//记录左右节点最大的数组元素下标 } if(temp > a[a1inum]){ currentIsMax = true; }else{ a[p] = a[a1inum];//将大者放到上移 p = a1inum; a1inum = 2 * p + 1; } } a[p] = temp; }
不停的重建堆,直到排序完成。
相关文章推荐
- 堆排序算法的JAVA实现
- 堆排序算法的java实现
- 堆排序算法(java版)
- java实现堆排序算法,和大家分享一下
- 堆排序算法原理及JAVA实现
- Java之堆排序算法(四)
- 八大排序算法之堆排序算法(JAVA)
- Java实现HEAPSORT堆排序算法
- 必须知道的八大种排序算法【java实现】(三) 归并排序算法、堆排序算法详解
- 堆排序算法-Java实现
- 堆排序算法java实现
- 排序算法之Java实现2——堆排序算法
- Java堆排序算法
- 堆排序算法的讲解及Java版实现
- 堆排序算法——Java实现
- 堆排序算法及其Java实现(以大根堆为例)
- 堆排序算法java实现
- 【java排序】 归并排序算法、堆排序算法
- java.util.TaskQueue的最小堆排序算法的应用
- Java 归并排序算法、堆排序算法实例详解