Thursday, May 3, 2012

B I S Sort


Bubble Sort
Bubble sort adalah Memindahkan elemen yang sekarang dengan elemen yang berikutnya, jika elemen sekarang , elemen berikutnya, maka tukar.
Dengan proses pengurutan Data paling akhir dibandingkan dengan data di depannya, jika ternyata lebih kecil maka tukar. Dan pengecekan yang sama dilakukan terhadap data yang selanjutnya sampai dengan data yang paling awal.
 
Selection Sort
Selection Sort adalah Membandingkan elemen yang sekarang dengan elemen yang berikutnya sampai dengan elemen yang terakhir. Jika ditemukan elemen lain yang lebih kecil dari elemen sekarang maka dicatat posisinya dan kemudian ditukar. Dan begitu seterusnya.

Insertion Sort
Insertion Sort adalah Pengurutan dilakukan dengan cara membandingkan data ke-I (dimana I dimulai dari data ke-2 sampai dengan data terakhir) dengan data berikutnya. Jika ditemukan data yang lebih kecil maka data tersebut disisipkan ke depan sesuai posisi yang seharusnya.

Program
int i, n, j, min_index, temp;
            int[] arr = new int[20];

            //tentukan banyaknya data (n)
            Console.Write("Jumlah Data : ");
            n = Convert.ToInt32(Console.ReadLine());

            //input data ke array sebanyak n data
            for (i = 0; i <= n - 1; i++)
            {
                Console.Write("Data ke {0} : ", i + 1);
                arr[i] = Convert.ToInt32(Console.ReadLine());
            }

            //Cetak data sebelum proses pengurutan
            Console.Write("\nData sebelum proses pengurutan\n");
            for (i = 0; i <= n - 1; i++)
            {
                Console.Write("{0} ", arr[i]);
            }
            //---------------------------------------------------------------
            Console.Write("\n");
            Console.WriteLine("METODE PENGURUTAN DATA");
            Console.WriteLine("1. METODE BUBBLE SORT");
            Console.WriteLine("2. METODE SELECTION SORT");
            Console.WriteLine("3. METODE INSERTION SORT");
            Console.WriteLine("--------------------------");
            Console.Write("Pilihan : ");
            int pilihan = Convert.ToInt32(Console.ReadLine());

            switch (pilihan)
            {
                case 1:
                    //proses bubble sort
                   
                    for (int pass = 1; pass <= n - 1; pass++)
                    {
                        for (int k = 0; k <= n - 2; k++)
                        {
                            if (arr[k] > arr[k + 1])
                            {
                                int Swap;
                                Swap = arr[k];
                                arr[k] = arr[k + 1];
                                arr[k + 1] = Swap;
                            }
                        }
                    }
                    break;
                case 2:

                    //proses selection sort
                    for (j = 0; j <= n - 2; j++)
                    {
                        min_index = j;
                        for (i = j + 1; i <= n - 1; i++)
                        {
                            if (arr[i] < arr[min_index])
                            {
                                min_index = i;
                            }
                        }
                        temp = arr[j];
                        arr[j] = arr[min_index];
                        arr[min_index] = temp;
                    }
                    break;
                case 3:
                    //PROSES Insertion Sort
                    j = 0;
                    for (i = 1; i <= n - 1; i++)
                    {
                        temp = arr[i];
                        j = i - 1;
                        while ((j >= 0) && (arr[j] >= temp))
                        {
                            arr[j + 1] = arr[j];
                            j--;
                        }
                        arr[j + 1] = temp;
                    }
                    break;
            }

            //Cetak data sebelum proses pengurutan
            Console.WriteLine();
            Console.WriteLine("Data sesudah proses pengurutan ");
            for (i = 0; i <= n - 1; i++)
            {
                Console.Write("{0} ", arr[i]);
            }
            Console.ReadKey();