DAA P3 merge sort, quick sort

 Merge Sort


#include <bits/stdc++.h>
using namespace std;

void merge(int array[], int const left, int const mid,
    int const right)
{
  int const subArrayOne = mid - left + 1;
  int const subArrayTwo = right - mid;

  auto *leftArray = new int[subArrayOne],
    *rightArray = new int[subArrayTwo];

  for (auto i = 0; i < subArrayOne; i++)
    leftArray[i] = array[left + i];
  for (auto j = 0; j < subArrayTwo; j++)
    rightArray[j] = array[mid + 1 + j];

  auto indexOfSubArrayOne = 0, indexOfSubArrayTwo = 0;
  int indexOfMergedArray = left;


  while (indexOfSubArrayOne < subArrayOne
    && indexOfSubArrayTwo < subArrayTwo) {
    if (leftArray[indexOfSubArrayOne]
      <= rightArray[indexOfSubArrayTwo]) {
      array[indexOfMergedArray]
        = leftArray[indexOfSubArrayOne];
      indexOfSubArrayOne++;
    }
    else {
      array[indexOfMergedArray]
        = rightArray[indexOfSubArrayTwo];
      indexOfSubArrayTwo++;
    }
    indexOfMergedArray++;
  }

  while (indexOfSubArrayOne < subArrayOne) {
    array[indexOfMergedArray]
      = leftArray[indexOfSubArrayOne];
    indexOfSubArrayOne++;
    indexOfMergedArray++;
  }

  while (indexOfSubArrayTwo < subArrayTwo) {
    array[indexOfMergedArray]
      = rightArray[indexOfSubArrayTwo];
    indexOfSubArrayTwo++;
    indexOfMergedArray++;
  }
  delete[] leftArray;
  delete[] rightArray;
}

void mergeSort(int array[], int const begin, int const end)
{
  if (begin >= end)
    return;

  int mid = begin + (end - begin) / 2;
  mergeSort(array, begin, mid);
  mergeSort(array, mid + 1, end);
  merge(array, begin, mid, end);
}

void printArray(int A[], int size)
{
  for (int i = 0; i < size; i++)
    cout << A[i] << " ";
  cout << endl;
}

int main()
{
  int arr[] = { 12, 11, 13, 5, 6, 7 };
  int arr_size = sizeof(arr) / sizeof(arr[0]);

  cout << "Given array is \n";
  printArray(arr, arr_size);

  mergeSort(arr, 0, arr_size - 1);

  cout << "\nSorted array is \n";
  printArray(arr, arr_size);
  return 0;
}


Quick Sort

#include<bits/stdc++.h>
using namespace std;

void swap(int arr[] , int pos1, int pos2){
  int temp;
  temp = arr[pos1];
  arr[pos1] = arr[pos2];
  arr[pos2] = temp;
}

int partition(int arr[], int low, int high, int pivot){
  int i = low;
  int j = low;
  while( i <= high){
    if(arr[i] > pivot){
      i++;
    }
    else{
      swap(arr,i,j);
      i++;
      j++;
    }
  }
  return j-1;
}

void quickSort(int arr[], int low, int high){
  if(low < high){
  int pivot = arr[high];
  int pos = partition(arr, low, high, pivot);
 
  quickSort(arr, low, pos-1);
  quickSort(arr, pos+1, high);
  }
}

int main()
{
  int n ;
  cout << " enter the size of array";
  cin>>n;
  int arr[n];
  for( int i = 0 ; i < n; i++){
    cin>> arr[i];
  }
  quickSort(arr, 0 , n-1);
  cout<<"The sorted array is: ";
  for( int i = 0 ; i < n; i++){
    cout<< arr[i]<<"\t";
  }
 
}

Comments

Popular posts from this blog

DAA P4 bfs, dfs

DAA P8 graph coloring

Practical 8 by Karan