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