Minggu, 15 Mei 2016

Merge Sort

public class MergeSort {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int i;
        int array[] = {12, 9, 4, 99, 120, 1, 3, 10};
            System.out.print("Data Tidak Terurut : \n");
        for (i = 0; i < array.length; i++){
            System.out.print(array[i] + " ");
    }
        System.out.println();
        mergeSort_srt(array, 0, array.length - 1);
        System.out.println("Diurutkan : \n");
        for (i = 0; i < array.length; i++){
            System.out.print(array[i] + " ");
        }
        System.out.println();
    }
     public static void mergeSort_srt(int array[], int lo, int n){
         int low = lo;
         int high = n;
         if (low >= high){
             return;
         }
         
         int middle = (low + high) /2;
         mergeSort_srt(array, low, middle);
         mergeSort_srt(array, middle + 1, high);
         int end_low = middle;
         int start_high = middle + 1;
         while ((lo <= end_low) && (start_high <= high)){
             if (array[low] < array [start_high]){
                 low ++;
             } else {
                 int Temp = array [start_high];
                 for (int k = start_high - 1; k >= low; k--){
                     array [k + 1] = array[k];
                 }
                 array[low] = Temp;
                 low ++;
                 end_low++;
                 start_high++;
             }
         }
     }
   
}
}

Tidak ada komentar:

Posting Komentar