java语言 堆排序

来源:互联网 发布:学英语哪个软件好 编辑:程序博客网 时间:2024/06/07 16:38

重点是向下调整

public class HeapSort {    public int[] heapSort(int[] A, int n) {        BuildMaxHeap(A, n);        for(int i=n-1; i>0; i--){            int tmp = A[i];            A[i] = A[0];            A[0] = tmp;            adjustDown(A, 0, i);        }        return A;    }            private void BuildMaxHeap(int[] A, int n){        for(int i = n/2; i>=0; i--){            adjustDown(A, i, n);        }    }        private void  adjustDown(int[] A, int k ,int len){        int tmp = A[k];        for(int i= 2*k; i<=len-1 ; i*=2){            if(i<len-1&&A[i]<A[i+1]) i++;            if(A[i] <= tmp) break;            else{                A[k] = A[i];                k = i;            }        }        A[k] = tmp;    }}


0 0