Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- void mergeSort(int arr[], int size);
- void mergeSort(int arr[], int leftIndex, int rightIndex);
- void mergeSortMerge(int arr[], int l, int m, int r);
- int main(){
- int arr[10] = {15, 6, 8, -1, 0, 23, 1, 42, 32, 44};
- mergeSort(arr, 10);
- for(auto i : arr)
- cout << i << " ";
- }
- void mergeSort(int arr[], int size){
- mergeSort(arr, 0, size - 1);
- }
- void mergeSort(int arr[], int leftIndex, int rightIndex){
- if(leftIndex < rightIndex){
- int middle = (leftIndex + rightIndex) / 2;
- mergeSort(arr, leftIndex, middle);
- mergeSort(arr, middle + 1, rightIndex);
- mergeSortMerge(arr, leftIndex, middle, rightIndex);
- }
- }
- void mergeSortMerge(int arr[], int l, int m, int r){
- //arr1: l to m
- //arr2: m + 1 to r
- int* arr1 = new int[m - l + 1],
- *arr2 = new int[r - m];
- for(int i = 0; i < m - l + 1; i++){
- arr1[i] = arr[i + l];
- arr2[i] = arr[i + m + 1];
- }
- int f = 0, s = 0, i = l;
- while(f < m - l + 1 && s < r - m){
- arr[i++] = arr1[f] < arr2[s] ? arr1[f++] : arr2[s++];
- }
- while(f < m - l + 1){
- arr[i++] = arr1[f++];
- }
- while(s < r - m){
- arr[i++] = arr2[s++];
- }
- delete[] arr1;
- delete[] arr2;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement