Minggu, 02 Desember 2012

C merge sort

merge sort dengan C

 
Listing Program

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


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

main() {
            clrscr();
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);
            }}

Tidak ada komentar:

Posting Komentar