堆排序

你说的曾经没有我的故事 提交于 2020-01-25 04:48:24
public static void myheapSort(int[] array){
    for (int i = array.length; i >1; i--) {
        for (int j = (i-1)/2; j >-1; j--) {
            myAdjustHeap(array,j,i);
        }
        int temp=array[0];
        array[0]=array[i-1];
        array[i-1]=temp;
    }
}


public static void myAdjustHeap(int[] array,int i,int length){
    int maxIndex=i;
    int leftIndex=2*i+1;
    int regitIndex=leftIndex+1;
    if(leftIndex>=length){
        return;
    }
    if(array[maxIndex]<array[leftIndex]){
        maxIndex=leftIndex;
    }
    if(regitIndex<length && array[maxIndex]<array[regitIndex]){
        maxIndex=regitIndex;
    }
    if(maxIndex!=i){
        int temp=array[i];
        array[i]=array[maxIndex];
        array[maxIndex]=temp;
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!