Untitled

 avatar
alexmayer
plain_text
a month ago
1.3 kB
23
Indexable
// This function combines two sorted subarrays into one sorted array.
void combine(int arr[], int left, int mid, int right) {
    int size = right - left + 1;
    int* temp = new int[size];

    int i = left;      // Starting index for the left subarray
    int j = mid + 1;   // Starting index for the right subarray
    int k = 0;         // Index for the temporary array

    // Merge the two subarrays into temp[]
    while(i <= mid && j <= right) {
        if(arr[i] <= arr[j])
            temp[k++] = arr[i++];
        else
            temp[k++] = arr[j++];
    }

    // Copy any remaining elements from the left subarray
    while(i <= mid)
        temp[k++] = arr[i++];

    // Copy any remaining elements from the right subarray
    while(j <= right)
        temp[k++] = arr[j++];

    // Copy the sorted subarray back to the original array
    for(int p = 0; p < size; p++) {
        arr[left + p] = temp[p];
    }

    delete [] temp;
}

// This function recursively sorts the array using the above combine function.
void mysterySort(int arr[], int left, int right) {
    if(left < right) {
        int mid = left + (right - left) / 2;
        mysterySort(arr, left, mid);
        mysterySort(arr, mid + 1, right);
        combine(arr, left, mid, right);
    }
}
Editor is loading...
Leave a Comment