Selasa, 06 Agustus 2013

Source Code Merge Sort

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

/**
 *
 * @author Fatur
 */
public class Nomer2 {
    public static void main(String[] args) {

int[] List1={3,6,16,19,21,23,47,81,95,100};

int[] List2={7,14,22,27,30,31,38,39,55,62};

int[] Hasil= new int[20];//array baru yang isinya 20

merge(List1,10,List2,10,Hasil);//digabung antara List1 & List2, terus dimasukkan ke Hasil

cetak (List1,10,List2,10,Hasil,20);//cetak List1, List2, Hasil

}

public static void merge(int[] List1, int sizeA, int[] List2, int sizeB, int[] Hasil)

{

int indeksA=0, indeksB=0, indeksC=0;

while(indeksA < sizeA && indeksB < sizeB) //membandingkan nilai elemen

if(List1[indeksA] < List2[indeksB]) Hasil[indeksC++] = List1[indeksA++]; //memasukkan nilai yang kecil ke array Hasil

else

Hasil[indeksC++] = List2[indeksB++];

while (indeksA < sizeA) Hasil[indeksC++] = List1[indeksA++]; //jika List1 sudah dimasukkan semua ke array Hasil

while (indeksB < sizeB) Hasil[indeksC++] = List2[indeksB++]; //jika List2 sudah dimasukkan semua ke array Hasil

}
public static void cetak(int[] List1, int sizeA, int[] List2, int sizeB, int[] Hasil, int sizeC) {
   
System.out.print(" List1 : ");

for(int i=0;i<sizeA;i++) //for nya buat nulis semua isi List1 (rentangnya 0 < List1 < sizeA (size A nya 10))
   
System.out.print(List1[i] + " ");

System.out.println(" ");

System.out.print(" List2 : ");

for(int j=0;j<sizeB;j++)//for nya buat nulis semua isi List2 (rentangnya 0 < List2 < sizeA (size B nya 10))
   
System.out.print(List2[j] + " ");

System.out.println(" ");

System.out.print(" Hasil : ");

for(int k=0;k<sizeC;k++)//for nya buat nulis semua isi dari hasil penggabungan (isinya ada 20 (didapet dari 10 + 10)

System.out.print(Hasil[k] + " ");

System.out.println(" ");
}
}