Berikut ini adalah program untuk algoritma Divide & conquer :
1. 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<<"************** MERGE SORT ****************\n"<<endl;
cout<<"Masukkan Elemen-Elemen Array(max. 10)"<<endl;
for(int count_1=0;count_1<array_size;count_1++)
{
cout<<"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);
}
}
2. Output
Minggu, 27 Oktober 2013
Langganan:
Posting Komentar (Atom)
0 komentar:
Posting Komentar