Ads Home1

C# Program - Metode Pengurutan Merge Sort

http://www.xcodeplus.net/2018/01/csharp-program-merge-sort.html


Kode Program Merge Sort

Sebelumnya kita telah membahas mengenai Shell Sort, pada postingan kali ini saya akan memberikan source code program implementasi pengurutan dengan metode Merge Sort. Metode Merge sort ini ditemukan oleh James Gosling.

Metode Merge sort memang bisa diterapkan secara internal dalam memori komputer (RAM). Algoritma merge sort juga sering digunakan untuk melakukan pengurutan external, misalnya pada kasus pengurutan berkas eksternal.

Algoritma merge sort merupakan contoh yang baik untuk pengurutan secara rekursif. Algoritma merge sort ini bekerja dengan membagi larik dan secara rekursif melakukan pengurutan di kedua bagian.

Berikut di bawah ini kode program yang akan mengimplementasikan metode pengurutan Merge Sort:

/************************************
 * Author Name : Muhammad Hari      *
 * Author URI  : www.xcodeplus.net  *
 ************************************/

using System;
using System.Collections;

namespace ConsoleApplicationMERGESORTRECURSIVE
{
    class Program
    {
       
        static ArrayList data, temp;
        static int numElements;

        private static void merge(ArrayList data, ArrayList temp,
        int low, int middle, int high)
        // Syarat : data[middle..high] Ascending
        // temp[low..middle-1] Ascending
        // Hasil akhir : data[low..high] memuat semua nilai
        // dalam urutan Ascending.
        {
            int ri = low; 
            int ti = low;
            int di = middle; 
           
            while (ti < middle && di <= high)
            {
               
                if (Convert.ToInt16(data[di]) <
                  Convert.ToInt16(temp[ti]))
                {
                    
                    data[ri++] = data[di++];
                }
                else
                {
                   
                    data[ri++] = temp[ti++];
                }
            }
           
            while (ti < middle)
            {
                data[ri++] = temp[ti++];
            }
        }

        private static void mergeSortRecursive
        (ArrayList data, ArrayList temp, int low, int high)
        // Syarat : 0 <= low <= high < data[numElements]
        // Hasil akhir : elemen di data[low..high] dalam
        // urutan Ascending.
        {
            // Membagi array menjadi dua bagian.
            int n = high - low + 1;
            int middle = low + n / 2;
            if (n < 2) return;
            
            for (int i = low; i < middle; i++)
            {
                temp[i] = data[i];
            }
           
            mergeSortRecursive(data, temp, low, middle);
           
            mergeSortRecursive(data, temp, middle + 1, high);
           
            merge(data, temp, low, middle, high);
            DisplayElements();
        }

        public static void mergeSort(ArrayList data, int n)
        // Syarat : 0 <= n <= data[numElements]
        // Hasil akhir : elemen-elemen di data[0..n-1] 
        // berada pada urutan Ascending.
        {
            temp = new ArrayList(numElements);
            mergeSortRecursive(data, temp, 0, numElements - 1);
        }


        private static void DisplayElements()
        {
            for (int i = 0; i < numElements; i++)
            {
                Console.Write(" " + data[i] + " ");
            }
            Console.WriteLine();
        }


        static void Main(string[] args)
        {
            Console.Write
            ("Berapa elemen array yang akan diurutkan ?  ");
            numElements = int.Parse(Console.ReadLine());

            data = new ArrayList(numElements);
           
            Random mRandom = new Random(100);
          

            for (int i = 0; i < numElements; i++)
                data.Add((int)(mRandom.NextDouble() * 100));

            Console.WriteLine("\nBilangan awal : ");

            DisplayElements();

            Console.WriteLine();
           
            mergeSort(data, numElements);

            Console.WriteLine("\nBilangan terurut : \n");
            DisplayElements();

            Console.ReadLine();
        }
    }
}


Berapa elemen array yang akan diurutkan ?  12

Bilangan awal :
96  15  66  90  35  94  71  61  34  14  96  53

71  15  34  14  35  53  96  61  66  90  96  94
14  15  34  71  35  53  90  61  66  96  96  94
14  15  34  35  53  71  61  66  90  96  94  96

Bilangan terurut :

14  15  34  35  53  71  61  66  90  96  94  96


Catatan:
Untuk pembahasan mengenai konsep dari pengurutan Merge Sort saya akan membahasnya pada postingan yang terpisah, karena akan sangat kompleks jika dilakukan bersamaan. So, jangan segan untuk kembali lagi kesini karna saya akan selalu memperbarui postingan saya setiap harinya.

Anda juga dapat mengimplementasikan kode program di atas di bahasa pemrograman lainnya seperti C++ dan Java yang memang pada dasarnya untuk penulisan syntaksnya tidaklah berbeda dengan bahasa pemrograman C# Anda hanya perlu merubah beberapa bagian seperti perintah input/output, implementasi class, implementasi penggunaan ArrayList dan sebagainya.




C# (dibaca: C Sharp) merupakan bahasa pemrograman generasi baru yang mewah, kaya akan fitur, dan dapat digunakan untuk membuat beraneka raga program/aplikasi di berbagai bidang. C# mendukung beberapa paradigma pemrograman: imperatif, deklaratif, fungsional, serta pemrograman berorientasi objek. C# termasuk dalam keluarga C, dan fitur-fiturnya banyak diadopsi dari Java dan C++. C# menggunakan pustaka (library) yang terdapat dalam .NET Framework, kelengkapan di dalam pustaka .NET Framework menjadikan proses pengembangan program/aplikasi menggunakan C# relatif lebih mudah dan cepat jika dibandingkan dengan C++ dan Java.


No comments:

Kami menerima masukan dari anda jika memang ada pembahasan yang keliru dan kami sangat senang jika anda dapat berkontribusi untuk menyempurnakan postingan kami. Anda dapat mengirimkan email ke : hari18.muhammad@gmail.com

Jika postingan ini bermanfaat jangan lupa share postingan ini. Kami sangat merekomendasikan untuk anda yang membutuhkan informasi tentang computer stuff silakan subscribe blog kami dapatkan informasi terupdate dari kami secara gratiss. Terimakasih!

Powered by Blogger.