0% found this document useful (0 votes)
5 views2 pages

Merge Sort Implementation in C, C++, Java, Python

The document provides implementations of the Merge Sort algorithm in C, C++, Java, and Python. Each section includes the code for merging and sorting arrays, along with functions to print the arrays before and after sorting. The implementations demonstrate the same algorithmic logic across different programming languages.

Uploaded by

ptnklbg
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views2 pages

Merge Sort Implementation in C, C++, Java, Python

The document provides implementations of the Merge Sort algorithm in C, C++, Java, and Python. Each section includes the code for merging and sorting arrays, along with functions to print the arrays before and after sorting. The implementations demonstrate the same algorithmic logic across different programming languages.

Uploaded by

ptnklbg
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Merge Sort in C Merge Sort in C++

#include <stdio.h> #include <iostream>


using namespace std;
void merge(int arr[], int l, int m, int r)
{ void merge(int arr[], int l, int m, int r)
int i, j, k; {
int n1 = m - l + 1; int i, j, k;
int n2 = r - m; int n1 = m - l + 1;
int n2 = r - m;
int L[n1], R[n2];
int L[n1], R[n2];
for (i = 0; i < n1; i++) for (i = 0; i < n1; i++)
L[i] = arr[l + i]; L[i] = arr[l + i];
for (j = 0; j < n2; j++) for (j = 0; j < n2; j++)
R[j] = arr[m + 1 + j]; R[j] = arr[m + 1 + j];

i = 0; i = 0; j = 0; k = l;
j = 0;
k = l; while (i < n1 && j < n2)
while (i < n1 && j < n2) {
{ if (L[i] <= R[j])
if (L[i] <= R[j]) {
{ arr[k] = L[i];
arr[k] = L[i]; i++;
i++; }
} else
else {
{ arr[k] = R[j];
arr[k] = R[j]; j++;
j++; }
} k++;
k++; }
}
while (i < n1) while (i < n1)
{ {
arr[k] = L[i]; arr[k] = L[i];
i++; i++;
k++; k++;
} }
while (j < n2)
{ while (j < n2)
arr[k] = R[j]; {
j++; arr[k] = R[j];
k++; j++;
} k++;
} }
}
void mergeSort(int arr[], int l, int r)
{ void mergeSort(int arr[], int l, int r)
if (l < r) {
{ if (l < r)
int m = l + (r - l) / 2; {
mergeSort(arr, l, m); int m = l + (r - l) / 2;
mergeSort(arr, m + 1, r); mergeSort(arr, l, m);
merge(arr, l, m, r); mergeSort(arr, m + 1, r);
} merge(arr, l, m, r);
} }
}
void printArray(int A[], int size)
{ void printArray(int A[], int size)
int i; {
for (i = 0; i < size; i++) int i;
printf("%d ", A[i]); for (i = 0; i < size; i++)
printf("\n"); cout << A[i] << " ";
} cout << endl;
}
int main()
{ int main()
int arr[] = {12, 11, 13, 5, 6, 7}; {
int arr_size = sizeof(arr) / sizeof(arr[0]); int arr[] = {12, 11, 13, 5, 6, 7};
int arr_size = sizeof(arr) / sizeof(arr[0]);
printf("Given array is \n");
printArray(arr, arr_size); cout << "Given array is \n";
printArray(arr, arr_size);
mergeSort(arr, 0, arr_size - 1);
mergeSort(arr, 0, arr_size - 1);
printf("\nSorted array is \n");
printArray(arr, arr_size); cout << "\nSorted array is \n";
return 0; printArray(arr, arr_size);
} return 0;
}
Merge Sort in Java Merge Sort in Python
class MergeSort { def merge_sort(arr):
void merge(int arr[], int l, int m, int r) { if len(arr) > 1:
int n1 = m - l + 1; mid = len(arr) // 2
int n2 = r - m; L = arr[:mid]
R = arr[mid:]
int L[] = new int[n1];
int R[] = new int[n2]; merge_sort(L)
merge_sort(R)
for (int i = 0; i < n1; ++i)
L[i] = arr[l + i]; i = j = k = 0
for (int j = 0; j < n2; ++j)
R[j] = arr[m + 1 + j]; while i < len(L) and j < len(R):
if L[i] < R[j]:
int i = 0, j = 0; arr[k] = L[i]
int k = l; i += 1
while (i < n1 && j < n2) { else:
if (L[i] <= R[j]) { arr[k] = R[j]
arr[k] = L[i]; j += 1
i++; k += 1
} else {
arr[k] = R[j]; while i < len(L):
j++; arr[k] = L[i]
} i += 1
k++; k += 1
}
while j < len(R):
while (i < n1) { arr[k] = R[j]
arr[k] = L[i]; j += 1
i++; k += 1
k++;
} def print_array(arr):
for i in range(len(arr)):
while (j < n2) { print(arr[i], end=" ")
arr[k] = R[j]; print()
j++;
k++; arr = [12, 11, 13, 5, 6, 7]
} print("Given array is", end="\n")
} print_array(arr)

void sort(int arr[], int l, int r) { merge_sort(arr)


if (l < r) { print("Sorted array is: ", end="\n")
int m = (l + r) / 2; print_array(arr)
sort(arr, l, m);
sort(arr, m + 1, r);
merge(arr, l, m, r);
}
}

static void printArray(int arr[]) {


int n = [Link];
for (int i = 0; i < n; ++i)
[Link](arr[i] + " ");
[Link]();
}

public static void main(String args[]) {


int arr[] = { 12, 11, 13, 5, 6, 7 };

[Link]("Given Array");
printArray(arr);

MergeSort ob = new MergeSort();


[Link](arr, 0, [Link] - 1);

[Link]("\nSorted array");
printArray(arr);
}
}

You might also like