Langkah pertama yang harus dilakukan dalam pengurutan menggunakan algoritma Merge Sort adalah

Merge sort merupakan algoritma pengurutan dalam ilmu komputer yang dirancang untuk memenuhi kebutuhan pengurutan atas suatu rangkaian data yang tidak memungkinkan untuk ditampung dalam memori komputer karena jumlahnya yang terlalu besar. Algoritma ini ditemukan oleh John von Neumann pada tahun 1945. (id.wikipedia.org)

Algoritma pengurutan data merge sort dilakukan dengan menggunakan cara divide and conquer yaitu dengan memecah kemudian menyelesaikan setiap bagian kemudian menggabungkannya kembali. Pertama data dipecah menjadi 2 bagian dimana bagian pertama merupakan setengah (jika data genap) atau setengah minus satu (jika data ganjil) dari seluruh data, kemudian dilakukan pemecahan kembali untuk masing-masing blok sampai hanya terdiri dari satu data tiap blok.
Setelah itu digabungkan kembali dengan membandingkan pada blok yang sama apakah data pertama lebih besar daripada data ke-tengah+1, jika ya maka data ke-tengah+1 dipindah sebagai data pertama, kemudian data ke-pertama sampai ke-tengah digeser menjadi data ke-dua sampai ke-tengah+1, demikian seterusnya sampai menjadi satu blok utuh seperti awalnya. Sehingga metode merge sort merupakan metode yang membutuhkan fungsi rekursi untuk penyelesaiannya.

Contoh penerapan atas sebuah larik/array sebagai data sumber yang akan diurutkan {3, 9, 4, 1, 5, 2} adalah sebagai berikut:

  • pertama kali larik tersebut dibagi menjadi dua bagian, {3, 9, 4} dan {1, 5, 2}
  • Kedua larik kemudian diurutkan secara terpisah sehingga menjadi {3, 4, 9} dan {1, 2, 5}
  • Sebuah larik baru dibentuk yang sebagai penggabungan dari kedua larik tersebut {1}, sementara nilai-nilai dalam masing larik {3, 4, 9} dan {2, 5} (nilai 1 dalam elemen larik ke dua telah dipindahkan ke larik baru)
  • langkah berikutnya adalah penggabungan dari masing-masing larik ke dalam larik baru yang dibuat sebelumnya.
    • {1, 2} <-> {3, 4, 9} dan {5}
    • {1, 2, 3} <-> {4, 9} dan {5}
    • {1, 2, 3, 4} <-> {9} dan {5}
    • {1, 2, 3, 4, 5} <-> {9} dan {null}
    • {1, 2, 3, 4, 5, 9} <-> {null} dan {null}


sebagai contoh soal sebagai berikut :

Membuat program dengan paradigma OOP yang dapat membaca isi sebuah file teks dari file berekstensi *.txt. file tersebut berisi sejumlah nama yang terdiri atas nama depan dan nama belakang.


Program yang dibuat harus dapat mengurutkan data nama tersebut berdasarkan nama depan dan atau nama belakang menggunakan metode merge sort.

Program harus dapat meminta masukkan dari user lokasi dari file teks yang berisi data, dan meminta meminta user untuk memilih apakah ingin diurutkan berdasar nama depan atau nama belakang.

Input                  :   sebuah file teks dan pilihan untuk mengurutkan berdasrakan nama depan atau nama belakang

Output               :    sebuah file teks yang telah terurut berdasarkan nama depan atau nama belakang sesuai dengan pilihan yang diminta.

Langkah-langkah penyelesaian

  1. Langkah pertama adalah melakukan pembacaan data dari file teks, dalam praktikum ini nama file adalah Data Nama.txt dan selanjutnya akan disebut seperti itu. Pembacaan data dilakukan sekaligus memeriksa apakah file tersebut valid atau tidak.
  2.  Kemudian setelah pembacaan data, dibuat sebuah array satu dimensi bertipe String sebagai penampung sementara dari data yang ada. Pada saat pembacaan, setiap pembacaan perbaris, akan dituliskan pada array yang bersangkutan pada baris yang telah ditetapkan melalui metode perulangan.
  3. Setelah didapat array sementara yang berisi data nama perbaris dari file Data Nama.txt, langkah selanjutnya adalah membuat array 2 dimensi dengan dimensi panjang adalah panjang array sementara – 1 dan lebar 3, lebar 3 digunakan karena terdapat nama yang memiliki 3 kata. Setiap kata pada setiap urutan array sementara tadi akan dipecah dan hasilnya akan dimasukkan pada array 2 dimensi tadi, sehingga akhirnya didapatkan data array bertipe String yang memiliki data nama dengan pemisahan perkata dari masing-masing nama.
  4. Metode pengurutan dengan nama depan dilakukan dengan membandingkan antara String pertama dari nama depan dengan String pertama nama depan yang lain, pembandingan dengan menggunakan nilai ASCII dari masing-masing String melalui method comparTo. Jika nama pertama memiliki awalan String yang memiliki nilai ASCII lebih besar, maka nama pertama dipindah sesuai dengan metode merge sort yang telah disebutkan di atas, dan seterusnya.
  5. Metode pengurutan nama belakang dilakukan dengan membalik terlebih dahulu nama depan dengan nama belakang, kemudian dilakukan proses pengurutan melalui metode merge sort, setelah itu nama depan dan nama belakang dikembalikan lagi seperti semula.  
  6. Contoh Program Merge Sorting :

    public class mergeSort{
      public static void main(String a[]){
      int i;
      int array[] = {12,9,4,99,120,1,3,10};
      System.out.println("\n\n RoseIndia\n\n");
      System.out.println(" Selection Sort\n\n");
      System.out.println("Values Before the sort:\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.print("Values after the sort:\n");
      for(i = 0; i <array.length; i++)
      System.out.print(array[i]+"  ");
      System.out.println();
      System.out.println("PAUSE");
      }
      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++;
      }
      }
      }
    }
    Contoh :

    Langkah pertama yang harus dilakukan dalam pengurutan menggunakan algoritma Merge Sort adalah


    Langkah pertama yang harus dilakukan dalam pengurutan menggunakan algoritma Merge Sort adalah
      Hasil Run

    Langkah pertama yang harus dilakukan dalam pengurutan menggunakan algoritma Merge Sort adalah


Merge Sort adalah algoritma pengurutan dalam ilmu komputer yang dirancang untuk memenuhi kebutuhan pengurutan atas suatu rangkaian data yang tidak memungkinkan untuk ditampung dalam memori komputer karena jumlahnya yang terlalu besar. Algoritma ini ditemukan oleh John von Neumann pada tahun 1945. Algoritma pengurutan data merge sort dilakukan dengan menggunakan cara divide and conquer yaitu dengan memecah kemudian menyelesaikan setiap bagian kemudian menggabungkannya kembali. Pertama data dipecah menjadi 2 bagian dimana bagian pertama merupakan setengah (jika data genap) atau setengah minus satu (jika data ganjil) dari seluruh data, kemudian dilakukan pemecahan kembali untuk masing-masing blok sampai hanya terdiri dari satu data tiap blok. Setelah itu digabungkan kembali dengan membandingkan pada blok yang sama apakah data pertama lebih besar daripada data ke-tengah+1, jika ya maka data ke-tengah+1 dipindah sebagai data pertama, kemudian data ke-pertama sampai ke-tengah digeser menjadi data ke-dua sampai ke-tengah+1, demikian seterusnya sampai menjadi satu blok utuh seperti awalnya. Sehingga metode merge sort merupakan metode yang membutuhkan fungsi rekursi untuk penyelesaiannya. Berikut adalah source code Merge Sort /* * Mengimplementasikan Merge Sort pada Java */ import java.util.Scanner; /* Class MergeSort */ public class MergeSort { /* Fungsi Merge Sort */ public static void sort(int[] a, int low, int high) { int N = high - low; if (N <= 1) return; int mid = low + N/2; // recursively sort sort(a, low, mid); sort(a, mid, high); // memisahkan 2 sub array yang berurutan int[] temp = new int[N]; int i = low, j = mid; for (int k = 0; k < N; k++) { if (i == mid) temp[k] = a[j++]; else if (j == high) temp[k] = a[i++]; else if (a[j]
Make Money Online : http://ow.ly/KNICZ

Merge Sort adalah algoritma pengurutan dalam ilmu komputer yang dirancang untuk memenuhi kebutuhan pengurutan atas suatu rangkaian data yang tidak memungkinkan untuk ditampung dalam memori komputer karena jumlahnya yang terlalu besar. Algoritma ini ditemukan oleh John von Neumann pada tahun 1945. Algoritma pengurutan data merge sort dilakukan dengan menggunakan cara divide and conquer yaitu dengan memecah kemudian menyelesaikan setiap bagian kemudian menggabungkannya kembali. Pertama data dipecah menjadi 2 bagian dimana bagian pertama merupakan setengah (jika data genap) atau setengah minus satu (jika data ganjil) dari seluruh data, kemudian dilakukan pemecahan kembali untuk masing-masing blok sampai hanya terdiri dari satu data tiap blok. Setelah itu digabungkan kembali dengan membandingkan pada blok yang sama apakah data pertama lebih besar daripada data ke-tengah+1, jika ya maka data ke-tengah+1 dipindah sebagai data pertama, kemudian data ke-pertama sampai ke-tengah digeser menjadi data ke-dua sampai ke-tengah+1, demikian seterusnya sampai menjadi satu blok utuh seperti awalnya. Sehingga metode merge sort merupakan metode yang membutuhkan fungsi rekursi untuk penyelesaiannya. Berikut adalah source code Merge Sort /* * Mengimplementasikan Merge Sort pada Java */ import java.util.Scanner; /* Class MergeSort */ public class MergeSort { /* Fungsi Merge Sort */ public static void sort(int[] a, int low, int high) { int N = high - low; if (N <= 1) return; int mid = low + N/2; // recursively sort sort(a, low, mid); sort(a, mid, high); // memisahkan 2 sub array yang berurutan int[] temp = new int[N]; int i = low, j = mid; for (int k = 0; k < N; k++) { if (i == mid) temp[k] = a[j++]; else if (j == high) temp[k] = a[i++]; else if (a[j]
Make Money Online : http://ow.ly/KNICZ

Merge Sort adalah algoritma pengurutan dalam ilmu komputer yang dirancang untuk memenuhi kebutuhan pengurutan atas suatu rangkaian data yang tidak memungkinkan untuk ditampung dalam memori komputer karena jumlahnya yang terlalu besar. Algoritma ini ditemukan oleh John von Neumann pada tahun 1945. Algoritma pengurutan data merge sort dilakukan dengan menggunakan cara divide and conquer yaitu dengan memecah kemudian menyelesaikan setiap bagian kemudian menggabungkannya kembali. Pertama data dipecah menjadi 2 bagian dimana bagian pertama merupakan setengah (jika data genap) atau setengah minus satu (jika data ganjil) dari seluruh data, kemudian dilakukan pemecahan kembali untuk masing-masing blok sampai hanya terdiri dari satu data tiap blok. Setelah itu digabungkan kembali dengan membandingkan pada blok yang sama apakah data pertama lebih besar daripada data ke-tengah+1, jika ya maka data ke-tengah+1 dipindah sebagai data pertama, kemudian data ke-pertama sampai ke-tengah digeser menjadi data ke-dua sampai ke-tengah+1, demikian seterusnya sampai menjadi satu blok utuh seperti awalnya. Sehingga metode merge sort merupakan metode yang membutuhkan fungsi rekursi untuk penyelesaiannya. Berikut adalah source code Merge Sort /* * Mengimplementasikan Merge Sort pada Java */ import java.util.Scanner; /* Class MergeSort */ public class MergeSort { /* Fungsi Merge Sort */ public static void sort(int[] a, int low, int high) { int N = high - low; if (N <= 1) return; int mid = low + N/2; // recursively sort sort(a, low, mid); sort(a, mid, high); // memisahkan 2 sub array yang berurutan int[] temp = new int[N]; int i = low, j = mid; for (int k = 0; k < N; k++) { if (i == mid) temp[k] = a[j++]; else if (j == high) temp[k] = a[i++]; else if (a[j]
Make Money Online : http://ow.ly/KNICZ


Page 2