package com.ds.sort;
public class MergeSort
{
private static int[] tmpArr;
private void mergeSort(int[] arr, int low, int high)
{
if (low < high) {
int middle = (low + high) / 2;
mergeSort(arr, low, middle);
mergeSort(arr, middle + 1, high);
merge(arr, low, middle, high);
}
}
private void merge(int[] arr, int low, int middle, int high)
{
for (int i = low; i <= high; i++) {
tmpArr[i] = arr[i];
}
int i = low;
int j = middle + 1;
int k = low;
while (i <= middle && j <= high) {
if (tmpArr[i] <= tmpArr[j]) {
arr[k] = tmpArr[i];
i++;
} else {
arr[k] = tmpArr[j];
j++;
}
k++;
}
while (i <= middle) {
arr[k] = tmpArr[i];
k++;
i++;
}
}
public static void main(String[] args) throws Exception
{
int[] inputArr = { 45, 23, 11, 89, 77, 98, 4, 28, 65, 43 };
MergeSort mms = new MergeSort();
MergeSort.tmpArr = new int[10];
mms.mergeSort(inputArr, 0, 9);
for (int i : inputArr) {
System.out.print(i);
System.out.print(" ");
}
}
}
No comments:
Post a Comment