diff --git a/Sorting/mergesort.c b/Sorting/mergesort.c new file mode 100644 index 0000000..f1394a5 --- /dev/null +++ b/Sorting/mergesort.c @@ -0,0 +1,86 @@ +#include +#include + +void merge(int arr[], int l, int m, int r) +{ + int i, j, k; + int n1 = m - l + 1; + int n2 = r - m; + + int L[n1], R[n2]; + + for (i = 0; i < n1; i++) + L[i] = arr[l + i]; + for (j = 0; j < n2; j++) + R[j] = arr[m + 1+ j]; + + i = 0; + j = 0; + k = l; + while (i < n1 && j < n2) + { + if (L[i] <= R[j]) + { + arr[k] = L[i]; + i++; + } + else + { + arr[k] = R[j]; + j++; + } + k++; + } + while (i < n1) + { + arr[k] = L[i]; + i++; + k++; + } + + while (j < n2) + { + arr[k] = R[j]; + j++; + k++; + } +} + +void mergeSort(int arr[], int l, int r) +{ + if (l < r) + { + int m = l+(r-l)/2; + + mergeSort(arr, l, m); + mergeSort(arr, m+1, r); + + merge(arr, l, m, r); + } +} + +void printArray(int A[], int size) +{ + int i; + for (i=0; i < size; i++) + printf("%d ", A[i]); + printf("\n"); +} + +int main() +{ + int n; + scanf("%d",&n); + int arr[n]; + for(int i=0;i +using namespace std; + + +void merge(int a[], int n1, int b[], int n2, int arr[]) +{ + int i=0,j=0,k=0; + cout<>n; + int arr[n]; + for(int i=0;i>arr[i]; + + mergeSort(arr,n); + for(int i=0;i + +void swap(int* a, int* b) +{ + int t = *a; + *a = *b; + *b = t; +} +int partition (int arr[], int low, int high) +{ + int pivot = arr[high]; + int i = (low - 1); + + for (int j = low; j <= high- 1; j++) + { + if (arr[j] <= pivot) + { + i++; + swap(&arr[i], &arr[j]); + } + } + swap(&arr[i + 1], &arr[high]); + return (i + 1); +} + +void quickSort(int arr[], int low, int high) +{ + if (low < high) + { + int pi = partition(arr, low, high); + quickSort(arr, low, pi - 1); + quickSort(arr, pi + 1, high); + } +} + +void printArray(int arr[], int size) +{ + int i; + for (i=0; i < size; i++) + printf("%d ", arr[i]); + printf("n"); +} + +int main() +{ + int n; + scanf("%d",&n); + int arr[n]; + for(int i=0;i +using namespace std; + + +void swap(int& a, int& b) +{ + int t=a; + a=b; + b=t; +} + +int partition(int input[], int n) +{ + int p=input[0]; + int count=0; + for(int i=0;icount) + { + if(input[i]=p) + j--; + else + { + swap(input[i],input[j]); + i++; + j--; + } + } + return count; +} + +void quickSort(int input[], int n) { + if(n==0||n==1) + return; + else + { + int p=partition(input,n); + quickSort(input,p); + quickSort(input+p+1,n-p-1); + } + +} + +int main() +{ + int n; + cin>>n; + int arr[n]; + for(int i=0;i>arr[i]; + + quickSort(arr,n); + for(int i=0;i