Merge-Sort Function
Merge Sort Java Code :
void MergeSort(int low, int high)
// a[low : high] is a global array to be sorted.
// Small(P) is true if there is only one element to
// sort. In this case the list is already sorted.
{
if (low < high) { // If there are more than one element
// Divide P into subproblems.
// Find where to split the set.
int mid = (low + high)/2;
// Solve the subproblems.
MergeSort(low, mid);
MergeSort(mid + 1, high);
// Combine the solutions.
Merge(low, mid, high);
}
}
void Merge(int low, int mid, int high)
// a[low:high] is a global array containing two sorted
// subsets in a[low:mid] and in a[mid+1:high]. The goal
// is to merge these two sets into a single set residing
// in a[low:high]. b[] is an auxiliary global array.
{
int h = low, i = low, j = mid+1, k;
while ((h <= mid) && (j <= high)) {
if (a[h] <= a[j]) { b[i] = a[h]; h++; }
else { b[i] = a[j]; j++; } i++;
}
if (h > mid) for (k=j; k<=high; k++) {
b[i] = a[k]; i++;
}
else for (k=h; k<=mid; k++) {
b[i] = a[k]; i++;
}
for (k=low; k<=high; k++) a[k] = b[k];
}
Merge Sort Java Code :
import java.util.*;
public class MergeSort {
public int a[] = new int[50];
public void merge_sort(int low, int high) {
int mid;
if (low < high) {
mid = (low + high) / 2;
merge_sort(low, mid);
merge_sort(mid + 1, high);
merge(low, mid, high);
}
}
public void merge(int low, int mid, int high) {
int h, i, j, k;
int b[] = new int[50];
h = low;
i = low;
j = mid + 1;
while ((h <= mid) && (j <= high)) {
if (a[h] <= a[j]) {
b[i] = a[h];
h++;
} else {
b[i] = a[j];
j++;
}
i++;
}
if (h > mid) {
for (k = j; k <= high; k++) {
b[i] = a[k];
i++;
}
} else {
for (k = h; k <= mid; k++) {
b[i] = a[k];
i++;
}
}
for (k = low; k <= high; k++)
a[k] = b[k];
}
public MergeSort() {
int num, i;
System.out.println(" MERGE SORT PROGRAM ");
System.out.println();
System.out.println();
System.out
.println("Please Enter THE No. OF ELEMENTS you want to sort[THEN PRESS ENTER]:");
num = new Scanner(System.in).nextInt();
System.out.println();
System.out.println("Now, Please Enter the (" + num
+ ") nos. [THEN PRESS ENTER]:");
for (i = 1; i <= num; i++) {
a[i] = new Scanner(System.in).nextInt();
}
merge_sort(1, num);
System.out.println();
System.out.println("So, the sorted list (using MERGE SORT) will be :");
System.out.println();
System.out.println();
for (i = 1; i <= num; i++)
System.out.print(a[i] + " ");
}
public static void main(String[] args) {
new MergeSort();
}
}