[JAVA] 덤 프.

3178 단어 자바알고리즘
이것 은 바로 가을 방법 이 아 닙 니까? 알고리즘 을 잘 알 고 있 습 니 다. 인터넷 의 원리 에 따라 배열 을 한 결과 주어진 코드 와 다 르 고 오류 가 있 으 면 지적 해 주세요.
public class HeapSort {
    public static void main(String[] args) {
        int [] a={49,38,65,97,71,13,27,49,78,34,12,64,1};
        int arrayLength = a.length;
        for(int i=0;i<arrayLength-1;i++){
            creatHeap(a,arrayLength-1-i);
            swap(a,0,arrayLength-1-i);
        }

        for(int i =0;i<a.length;i++){
            System.out.print(a[i]+" ");
        }

    }

    static void creatHeap(int datas[],int lastIndex){//lastIndex=Length-1
        for(int i=(lastIndex-1)/2;i>=0;i--){
            int p = i;//   
            int l = 2*p+1;//   ( i=(lastIndex-1)/2          )
            if(lastIndex>l){//      
                if(datas[l]<datas[l+1]){
                    swap(datas,l,l+1);
                }
            }
            if(datas[p]<datas[l]){
                swap(datas,p,l);
            }
        }
    }

    static void swap(int[] data, int i, int j) {
        int tmp=data[i];
        data[i]=data[j];
        data[j]=tmp;
    }

}

좋은 웹페이지 즐겨찾기