"Java 힙정렬 구현"의 두 판 사이의 차이

4번째 줄: 4번째 줄:


<source lang='Java'>
<source lang='Java'>
import java.util.Arrays;
public class MyClass {
public class MyClass {
     private static void heapify(int arr[], int length, int i) {
     private static void heapify(int arr[], int length, int i) {
16번째 줄: 15번째 줄:
         }
         }
     }
     }
     private static void heap_sort(int arr[]) {
     private static void heapSort(int arr[]) {
         int i, temp, length = arr.length;
         int i, temp, length = arr.length;
         for(i=length/2-1; i>=0; i--) heapify(arr, length, i);
         for(i=length/2-1; i>=0; i--) heapify(arr, length, i);
25번째 줄: 24번째 줄:
     }
     }
     public static void main(String args[]) {
     public static void main(String args[]) {
         int arr[] = {3,4,2,1,7,5,8,9,0,6,100,10};
         int arr[] = {9,1,22,4,0,-1,1,22,100,10};
         heap_sort(arr);
         heapSort(arr);
         System.out.println( Arrays.toString(arr) );
         for(int x: arr) System.out.format("%d ",x);
         // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100]
         // -1 0 1 1 4 9 10 22 22 100  
     }
     }
}
}

2018년 8월 28일 (화) 20:47 판

1 개요

Java 힙정렬 구현
자바 힙정렬 구현
public class MyClass {
    private static void heapify(int arr[], int length, int i) {
        int left = 2*i + 1, right = 2*i + 2;
        int temp, largest = i;
        if( left<length && arr[left]>arr[largest]) largest = left;
        if( right<length && arr[right]>arr[largest]) largest = right;
        if( largest != i ) {
            temp = arr[i]; arr[i] = arr[largest]; arr[largest] = temp;
            heapify(arr, length, largest);
        }
    }
    private static void heapSort(int arr[]) {
        int i, temp, length = arr.length;
        for(i=length/2-1; i>=0; i--) heapify(arr, length, i);
        for(i=length-1; i>=0; i--) {
            temp = arr[0]; arr[0] = arr[i]; arr[i] = temp;
            heapify(arr, i, 0);
        }
    }
    public static void main(String args[]) {
        int arr[] = {9,1,22,4,0,-1,1,22,100,10};
        heapSort(arr);
        for(int x: arr) System.out.format("%d ",x);
        // -1 0 1 1 4 9 10 22 22 100 
    }
}

2 같이 보기

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}