C

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 11

* C++ Program to Implement Merge Sort

*/
#include <iostream>
using namespace std;
#include <conio.h>
void merge(int *,int, int , int );
void mergesort(int *a, int low, int high)
{
int mid;
if (low < high)
{
mid=(low+high)/2;
mergesort(a,low,mid);
mergesort(a,mid+1,high);
merge(a,low,high,mid);
}
return;
}
void merge(int *a, int low, int high, int mid)
{
int i, j, k, c[50];
i = low;
k = low;
j = mid + 1;
while (i <= mid && j <= high)
{
if (a[i] < a[j])
{
c[k] = a[i];
k++;
i++;
}
else
{
c[k] = a[j];
k++;
j++;
}
}
while (i <= mid)
{
c[k] = a[i];
k++;
i++;
}
while (j <= high)
{
c[k] = a[j];
k++;
j++;
}
for (i = low; i < k; i++)
{
a[i] = c[i];
}
}
int main()
{
int a[20], i, b[20];
cout<<"enter the elements\n";
for (i = 0; i < 5; i++)
{
cin>>a[i];
}
mergesort(a, 0, 4);
cout<<"sorted array\n";
for (i = 0; i < 5; i++)
{
cout<<a[i];
}
cout<<"enter the elements\n";
for (i = 0; i < 5; i++)
{
cin>>b[i];
}
mergesort(b, 0, 4);
cout<<"sorted array\n";
for (i = 0; i < 5; i++)
{
cout<<b[i];
}
getch();
}

#include <cstdlib>
#include <iostream>

using namespace std;

void Merge(int* A, int kiri,int tengah, int kanan){


int B[kiri+kanan];
int i,kidal1,kidal2;
kidal1=kiri;
kidal2=tengah+1;
i=kiri;
while (kidal1<=tengah && kidal2 <= kanan){
if(A[kidal1] <= A[kidal2]){
B[i]=A[kidal1];
kidal1++;
}
else{
B[i]=A[kidal2];
kidal2++;
}
i++;
}
while ( kidal1 <= tengah ){
B[i] = A[kidal1];
kidal1++;
i++;
}

while ( kidal2 <= kanan ){


B[i] = A[kidal2];
kidal2++;
i++;
}

for (int i=kiri;i<= kanan;i++){


A[i]=B[i];
}

void MergeSort (int* A, int i, int j){


int k;
if (i<j){
k= ((i+j)/2);
MergeSort(A, i, k);
MergeSort(A, k+1, j);
Merge(A, i, k, j);
}
}

int main(int argc, char *argv[])


{
int n;
int i;
int j;
cout<<"Merge Sort with Divide and Conquer Algoritm";
cout<<"Banyak data :";
cin>>n;
i=1;
j=n;
int A[n];
for (int x=1;x<=n;x++){
cout<<"masukan data ke-"<<x<<" : ";
cin>>A[x];
}
cout<<"Data sebelum diurutkan "<<endl;
for (int x=1;x<=j;x++){
cout<<A[x]<<" ";
}
cout<<endl;
MergeSort(A,i,j);
cout<<"Data setelah diurutkan "<<endl;
for (int x=1;x<=j;x++){
cout<<A[x]<<" ";
}
cout<<endl;
system("pause");
return 0;
}

Merge Sort

#include <iostream.h>
int a[50];
void merge(int,int,int);
void merge_sort(int low,int high)
{
int mid;
if(low<high)
{
mid=(low+high)/2;
merge_sort(low,mid);
merge_sort(mid+1,high);
merge(low,mid,high);
}
}
void merge(int low,int mid,int high)
{
int h,i,j,b[50],k;
h=low;
i=low;
j=mid+1;

while((h<=mid)&&(j<=high))
{
if(a[h]<=a[j])
{
b[i]=a[h];
h++;
}
else
{
b[i]=a[j];
j++;
}
i++;
}
if(h>mid)
{
for(k=j;k<=high;k++)
{
b[i]=a[k];
i++;
}
}
else
{
for(k=h;k<=mid;k++)
{
b[i]=a[k];
i++;
}
}
for(k=low;k<=high;k++) a[k]=b[k];
}
void main()
{
int num,i;

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

cout<<"*******************************************************************
*************"<<endl;
cout<<endl<<endl;
cout<<"Please Enter THE NUMBER OF ELEMENTS you want to sort [THEN
PRESS
ENTER]:"<<endl;
cin>>num;
cout<<endl;
cout<<"Now, Please Enter the ( "<< num <<" ) numbers (ELEMENTS) [THEN
PRESS ENTER]:"<<endl;
for(i=1;i<=num;i++)
{
cin>>a[i] ;
}
merge_sort(1,num);
cout<<endl;
cout<<"So, the sorted list (using MERGE SORT) will be :"<<endl;
cout<<endl<<endl;
for(i=1;i<=num;i++)
cout<<a[i]<<" ";
cout<<endl<<endl<<endl<<endl;

Contoh Program sort, binary, sequential pada C++

Ini adalah program sorting paling lengkap.

contoh program sort c++ :

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

int data[100],data2[100];
int n;

void tukar(int a,int b)


{
int t;
t = data[b];
data[b] = data[a];
data[a] = t;
}

void bubble_sort()
{
for(int i=1;i<n;i++)
{
for(int j=n-1;j>=i;j)
{
if(data[j]<data[j-1]) tukar(j,j-1);
}
}
cout<<bubble sort selesai!<<endl;
}

void exchange_sort()
{
for (int i=0; i<n-1; i++)
{
for(int j = (i+1); j<n; j++)
{
if (data [i] > data[j]) tukar(i,j);
}
}
cout<<exchange sort selesai!<<endl;
}

void selection_sort()
{
int pos,i,j;
for(i=0;i<n-1;i++)
{
pos = i;
for(j = i+1;j<n;j++)
{
if(data[j] < data[pos]) pos = j;
}
if(pos != i) tukar(pos,i);
}
cout<<selection sort selesai!<<endl;
}
void insertion_sort()
{
int temp,i,j;
for(i=1;i<n;i++)
{
temp = data[i];
j = i -1;
while(data[j]>temp && j>=0)
{
data[j+1] = data[j];
j;
}
data[j+1] = temp;
}
cout<<insertion sort selesai!<<endl;
}

void QuickSort(int L, int R) //the best sort ive ever had


{
int i, j;
int mid;

i = L;
j = R;
mid = data[(L+R) / 2];

do
{
while (data[i] < mid) i++;
while (data[j] > mid) j;

if (i <= j)
{
tukar(i,j);
i++;
j;
};
} while (i < j);

if (L < j) QuickSort(L, j);


if (i < R) QuickSort(i, R);
}
void Input()
{
cout<<Masukkan jumlah data = ; cin>>n;
for(int i=0;i<n;i++)
{
cout<<Masukkan data ke-<<(i+1)<< = ; cin>>data[i];
data2[i] = data[i];
}
}

void Tampil()
{
cout<<Data : <<endl;
for(int i=0;i<n;i++)
{
cout<<data[i]<< ;
}
cout<<endl;
}

void AcakLagi()
{
for(int i=0;i<n;i++)
{
data[i] = data2[i];
}
cout<<Data sudah teracak!<<endl;
}

void main()
{
int pil;
clrscr();
do
{
clrscr();
cout<<Program Sorting Komplit!!!<<endl;
cout<<*********************************************<<endl;
cout<< 1. Input Data<<endl;
cout<< 2. Bubble Sort<<endl;
cout<< 3. Exchange Sort<<endl;
cout<< 4. Selection Sort<<endl;
cout<< 5. Insertion Sort<<endl;
cout<< 6. Quick Sort<<endl;
cout<< 7. Tampilkan Data<<endl;
cout<< 8. Acak Data<<endl;
cout<< 9. Exit<<endl;
cout<< Pilihan Anda = ; cin>>pil;
switch(pil)
{
case 1:Input(); break;
case 2:bubble_sort(); break;
case 3:exchange_sort(); break;
case 4:selection_sort(); break;
case 5:insertion_sort(); break;
case 6:QuickSort(0,n-1);
cout<<quick sort selesai!<<endl;
break;
case 7:Tampil(); break;
case 8:AcakLagi(); break;
}
getch();
}while(pil!=9);
}

You might also like