package org.lion.euler.study.sort; /** * 堆排序 * * 原理:建立大顶堆,交换第一个与最后一个值,重新维护大顶堆。 * @author lion * */ public class HeapSort extends AbstractSort { @Override public void sort(Integer[] array) { int len = array.length/2; while(len >= 0){ this.heapMax(array, len, array.length); len -= 1; } int curLen = array.length - 1; while(curLen >= 0){ this.swap(array, 0, curLen); this.heapMax(array, 0, curLen); curLen -= 1; } } private void heapMax(Integer[] array, int index, int maxLen){ int len = maxLen; int curIndex = index; while(curIndex < len){ int left = curIndex * 2; int right = left + 1; int maxIndex = curIndex; if(left < len && array[left] > array[maxIndex]){ maxIndex = left; } if(right < len && array[right] > array[maxIndex]){ maxIndex = right; } if(maxIndex > curIndex){ this.swap(array, curIndex, maxIndex); curIndex = maxIndex; }else{ break; } } } }
排序-JAVA实现【四】堆排序
猜你喜欢
转载自blog.csdn.net/jiangxuexuanshuang/article/details/80229347
今日推荐
周排行