Sabtu, 18 Mei 2013

Source Code Merge Sort Pada Java



contoh source code pengurutan angka menggunakan prinsip merge sort,. kalo ada salah dalam source codenya atau komenanya,., mohon maaf ya, karena aku baru belajar,., :) :)

========================================================================


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package PraktikumASD;

import java.util.Scanner;

/**
 *
 * @author Nenov
 */
public class MergeSort {
    
    // method untuk proses mengurutkan angka yang berada dalam array
    public void MergeSort(int angka[], int rnd, int tg) { 

        int low = rnd;
        int high = tg;
        //meriksa apakah low lebih kecil dari pada high, jika tidak maka angka telah terurut
        if (low < high) {
            int middle = (low + high) / 2;//mendapatkan indeks dari elemen yang ada di tengah 
            MergeSort(angka, low, middle);//melakukan rekrusif untuk mengurutkan sisi kiri array 
            MergeSort(angka, middle + 1, high);//melakukan rekrusif untuk  mengurutkan sisi kanan array
            int end_low = middle;
            int start_high = middle + 1;
            // proses perulangan untuk membandingkan isi array dengan isi array sebelah kananya, 
            // perulangan akan terus dilakukan selama rnd lebih kecil sama dengan end_low dan start_high kecil sama dengan dengan high
            while ((rnd <= end_low) && (start_high <= high)) { 
                if (angka[low] < angka[start_high]) {// jika isi array lebih kecil dari isi array sesudahnya atau sebelah kananya
                    low++;// maka low akan bertambah 1
                } else {  //jika isi array lebih besarkecil dari isi array sesudahnya atau sebelah kananya
                    int Temp = angka[start_high]; // temp adalah isi dari array ke start_high, start_high adalh indeks yang di peroleh dari indeks yang di tengah ditambah 1
                    for (int k = start_high - 1; k >= low; k--) {// perulangan untuk penukaran array
                        angka[k + 1] = angka[k]; //proses penukuran tempat array dari array yg sebelah kananya array saat ini menjadi array sekarang
                    }
                    angka[low] = Temp; // mengisi array dengn temp
                    low++;// low bertambah 1
                    end_low++; // end_low akan bertambah
                    start_high++;// strat_high kan bertambah 1
                }

            }
            System.out.println(" ");
            for (int i = 0; i < angka.length; i++) {//perulangan untuk menampilkan proses 
                System.out.print(angka[i] + " ");
            }
        }
    }
    // method untuk mencetak angka - angka setelah di urutkan
    public void cetak(int angka[], int pj) {
        MergeSort(angka, 0, pj - 1);//memanggil method MergeSort
        System.out.print("\n\nSetelah sorting:\n");
        for (int i = 0; i < pj; i++) {// perulangan untuk menampilkan angka yang tlah di urutkan
            System.out.print(angka[i] + "  ");
        }
        System.out.println();
    }
}


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

class test {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Masukan Batasan array : ");
        int max = input.nextInt();// menyimpan inputan dari user ke dalam max
        int[] angka = new int[max]; // membuat tempat array sebanyak yang di inputkan user
        System.out.println("Masukan data yang ingin di sorting : ");
        for (int i = 0; i < max; i++) { // perulangan untuk mengisi array dengan angka
            System.out.print("Data ke-" + (i + 1) + " : ");
            angka[i] = input.nextInt();// angka yang di masukan di simpan di dalam array
        }
        MergeSort sort = new MergeSort(); // membuat objek baru dari kelas MergeSort
        sort.cetak(angka, max); 

    }
}

Tidak ada komentar:

Posting Komentar