Untitled
unknown
plain_text
2 years ago
1.1 kB
7
Indexable
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
int left_arr[100];
int right_arr[100];
int result_arr[200];
int arr[]={10, 50, 40, 67, 1, 5, 10, 3, 9};
void merge(int arr[], int left, int mid, int right)
{
int i;
int j;
for(i=0; i<=mid-left; i++)
left_arr[i]=arr[i+left];
for(j=0; j<=right-(mid+1); j++)
right_arr[j]=arr[j+mid+1];
i = j = 0;
int k=0;
while(i<=mid-left || j<=right-(mid+1))
{
if(i<=mid-left && j<=right-(mid+1)){
if(left_arr[i]<=right_arr[j]){
arr[left+k]=left_arr[i];
i++;
k++;
}else{
arr[left+k]=right_arr[j];
j++;
k++;
}
}else if(i<=mid-left){
arr[left+k]=left_arr[i];
i++;
k++;
}else if(j<=right-(mid+1)){
arr[left+k]=right_arr[j];
j++;
k++;
}
}
}
void merge_sort(int arr[], int left, int right)
{
if(left>=right)
return;
int mid = (left + right) / 2;
merge_sort(arr, left, mid);
merge_sort(arr, mid+1, right);
merge(arr, left, mid, right);
}
int main()
{
merge_sort(arr, 0, 8);
return 0;
}
Editor is loading...
Leave a Comment