Subscribe:

Minggu, 17 November 2013

Program Merge Sort Algoritma Devide & Conquer

LISTING PROGRAM






#include <iostream.h>
#include <conio.h>


void merge(long [], int, int);                  

void merge_sort(long [], int);

void gotoxy(const int x, const int y){
}



main()
{
                const int array_size = 10;              
                long array[array_size] = {0};

                cout<<"******************************************"<<endl;
                cout<<"************** MERGE SORT ****************"<<endl;
                cout<<"******************************************"<<endl<<endl;

                cout<<"Masukkan Elemen-Elemen Array(max. 10)"<<endl<<endl;

                                for(int count_1=0;count_1<array_size;count_1++)
                                {
                                                cout<<"\t Elemen["<<count_1<<"] = ";
                                                cin>>array[count_1];
                                }

                merge_sort(array, array_size);  
                
 gotoxy(35,10);
                cout<<"Elemen-Elemen Yang Sudah di Sortir : ";
                for(int count_2=0;count_2<array_size;count_2++)
                {
                                gotoxy(50, 12+count_2);
                                cout<<"Elemen ["<<count_2<<"] = "<<array[count_2]<<endl;
                }

                getch();
                return 0;
}

/*************************************************************************/

void merge(long array[], int array_size_1, int array_size_2)
{
                long *temp_array = new long[array_size_1+array_size_2];

                int count_1 = 0;
                int count_2 = 0;
                int count_3 = 0;

                while(count_2<array_size_1 && count_3<array_size_2)
                {
                                if(array[count_2]<=array[array_size_1+count_3])
                                {
                                                temp_array[count_1] = array[count_2];
                                                count_2++;
                                }
                                else
                                {
                                                temp_array[count_1] = array[array_size_1+count_3];
                                                count_3++;
                                }
                                count_1++;
                }

                while(count_2<array_size_1)
                {
                                temp_array[count_1] = array[count_2];
                                count_1++;
                                count_2++;
                }

                while(count_3<array_size_2)
                {
                                temp_array[count_1] = array[array_size_1+count_3];
                                count_3++;
                                count_1++;
                }

                for(int count_4=0; count_4<array_size_1+array_size_2; count_4++)
                                array[count_4] = temp_array[count_4];

                                delete temp_array;
}

/**************************************************************************/

void merge_sort(long array[], int array_size)
{
                if(array_size>1)
                {
                                int sub_array_size_1 = array_size/2;
                                int sub_array_size_2 = array_size - sub_array_size_1;

                                merge_sort(array, sub_array_size_1);

                                merge_sort(array+sub_array_size_1, sub_array_size_2);
                                merge(array, sub_array_size_1, sub_array_size_2);
                }
}



 OUTPUT PROGRAM




0 komentar:

Posting Komentar