Showing posts with label Divide and Conquer. Show all posts
Showing posts with label Divide and Conquer. Show all posts

Wednesday, September 26, 2018

Collatz Conjecture Program in C++

#include<iostream>
using namespace std;

int collatz(int n)
{
if (n == 1)
{
return 0;
}
else if(n % 2 == 0)
{

return 1 + collatz(n / 2);
}
else
{
return 1 + collatz(3 * n + 1);
}
}


int main(void)
{
int num;
cout<<"\n Enter any Number : ";
cin>>num;
cout<<"\n Answer : "<<collatz(num)<<"\n";
}

Program of Quick Sort in C++


#include<iostream>
using namespace std;

void swap(int *x, int *y)
{
int temp = *x;
*x = *y;
*y = temp;
}

int partition(int arr[], int start, int end)
{
int pivot = arr[end];
int i,j;

j = start;
for (i = start; i < end; i++)
{
if (arr[i] <= pivot)
{
swap(&arr[i], &arr[j]);
j++;
}

}
swap(&arr[j], &arr[end]);
return j;
}

void quicksort(int arr[], int start, int end)
{
int part;

if (start < end)
{
part = partition(arr, start, end);

quicksort(arr, start, part - 1);
quicksort(arr, part + 1, end);
}
}

int main()
{
int size;
cout<<"\n Enter the size of the array : ";
cin>>size;

int arr[size];

cout<<"\n Enter "<<size<<" elements in the array : ";
for (int i = 0; i < size; i++)
{
cin>>arr[i];
}

quicksort(arr, 0, size - 1);

cout<<"\n Sorted Array : ";
for (int i = 0; i < size; i++)
{
cout<<arr[i]<<" ";
}

return 0;
}


Wednesday, September 19, 2018

Merge Sort Program in C++

//MERGE SORT PROGRAM IN C++

#include<iostream>
using namespace std;

void merge(int arr[], int start, int size, int mid)
{
int s1, s2, i, j;

//Assigning size to the two array to be merged.
s1 = mid - start + 1;
s2 = size - mid;

int arr1[s1], arr2[s2];

//Initailizing those array
for (i = 0; i < s1; i++)
arr1[i] = arr[start + i];
for (j = 0; j < s2; j++)
arr2[j] = arr[mid + 1 + j];
i = 0;
j = 0;

int k = start;

//Merging them in sorted array
while (i < s1 && j < s2)
{
if (arr1[i] <= arr2[j])
{
arr[k] = arr1[i];
i++;
}
else
{
arr[k] = arr2[j];
j++;
}
k++;
}

while (i < s1)
{
arr[k] = arr1[i];
i++;
k++;
}

while (j < s2)
{
arr[k] = arr2[j];
j++;
k++;
}
}

void mergesort(int arr[],int start, int size)
{
int mid;

if (size - start + 1 < 2)
{
return;
}

else
{
mid = (start + size)/2;
//Sorting left array
mergesort(arr, start, mid);
//Sorting right array
mergesort(arr, mid + 1,size);
merge(arr, start, size, mid);
}
}

int main()
{
int arr[10], size;
cout<<"\n Enter the size of array : ";
cin>>size;
cout<<"\n Enter the element in the array : ";
for (int i = 0; i < size; i++)
cin>>arr[i];

mergesort(arr, 0, size-1);
cout<<"\n Sorted Array is : ";
for (int i = 0; i < size; i++)
cout<<arr[i]<<" ";
return 0;
}