From 3e21f4c1097f5379af8e9bee521d05f28817e0f3 Mon Sep 17 00:00:00 2001 From: ABHEER MEHROTRA <72267713+abheer18@users.noreply.github.com> Date: Thu, 6 Oct 2022 23:25:09 +0530 Subject: [PATCH] DSA algorithms --- MergeSort.cpp | 69 ++++++++++++++++++++++++++++++++++++++++++++ QuickSort.cpp | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 149 insertions(+) create mode 100644 MergeSort.cpp create mode 100644 QuickSort.cpp diff --git a/MergeSort.cpp b/MergeSort.cpp new file mode 100644 index 0000000..c8558f7 --- /dev/null +++ b/MergeSort.cpp @@ -0,0 +1,69 @@ +#include +using namespace std; +void swapping(int &a, int &b) { //swap the content of a and b + int temp; + temp = a; + a = b; + b = temp; +} +void display(int *array, int size) { + for(int i = 0; i> n; + int arr[n]; //create an array with given number of elements + cout << "Enter elements:" << endl; + for(int i = 0; i> arr[i]; + } + cout << "Array before Sorting: "; + display(arr, n); + mergeSort(arr, 0, n-1); //(n-1) for last index + cout << "Array after Sorting: "; + display(arr, n); +} \ No newline at end of file diff --git a/QuickSort.cpp b/QuickSort.cpp new file mode 100644 index 0000000..79410ee --- /dev/null +++ b/QuickSort.cpp @@ -0,0 +1,80 @@ +// Quick sort in C++ + +#include +using namespace std; + +// function to swap elements +void swap(int *a, int *b) { + int t = *a; + *a = *b; + *b = t; +} + +// function to print the array +void printArray(int array[], int size) { + int i; + for (i = 0; i < size; i++) + cout << array[i] << " "; + cout << endl; +} + +// function to rearrange array (find the partition point) +int partition(int array[], int low, int high) { + + // select the rightmost element as pivot + int pivot = array[high]; + + // pointer for greater element + int i = (low - 1); + + // traverse each element of the array + // compare them with the pivot + for (int j = low; j < high; j++) { + if (array[j] <= pivot) { + + // if element smaller than pivot is found + // swap it with the greater element pointed by i + i++; + + // swap element at i with element at j + swap(&array[i], &array[j]); + } + } + + // swap pivot with the greater element at i + swap(&array[i + 1], &array[high]); + + // return the partition point + return (i + 1); +} + +void quickSort(int array[], int low, int high) { + if (low < high) { + + // find the pivot element such that + // elements smaller than pivot are on left of pivot + // elements greater than pivot are on righ of pivot + int pi = partition(array, low, high); + + // recursive call on the left of pivot + quickSort(array, low, pi - 1); + + // recursive call on the right of pivot + quickSort(array, pi + 1, high); + } +} + +// Driver code +int main() { + int data[] = {8, 7, 6, 1, 0, 9, 2}; + int n = sizeof(data) / sizeof(data[0]); + + cout << "Unsorted Array: \n"; + printArray(data, n); + + // perform quicksort on data + quickSort(data, 0, n - 1); + + cout << "Sorted array in ascending order: \n"; + printArray(data, n); +} \ No newline at end of file