package com.webspherenotes.algo;
public class MergeSort {
/**
* @param args
*/
public static void main(String[] args) {
int[] inplace = {10,9,8,7,6,5,4,3,2,1,0};
MergeSort ms = new MergeSort();
ms.sort(inplace,0, inplace.length-1);
ms.printArray(inplace,"Final result");
}
private void sort(int[] input, int lo, int hi){
if(hi <= lo) return;
int mid = (hi+lo)/2;
sort(input,lo,mid);
sort(input,mid+1,hi);
merge(input, lo,mid,hi);
}
private void merge(int[] input, int lo, int mid, int hi){
printArray(input,lo,hi,"input");
int auxArrayLength = hi - lo+1;
int[] auxArray = new int[auxArrayLength];
int auxCounter =0 ;
for(int i = lo ; i <= hi ;i++)
auxArray[auxCounter++] = input[i];
printArray(auxArray,"Temp Array");
int auxArrayMid = (mid-lo) ;
int firstArrayCounter =0 ;
int secondArrayCounter = auxArrayMid +1;
for(int inputArrayCounter = lo ; inputArrayCounter <= hi; inputArrayCounter++ ){
if(firstArrayCounter > auxArrayMid){ //First array is all coiped
input[inputArrayCounter] = auxArray[secondArrayCounter++];
}else if(secondArrayCounter >= auxArrayLength){ //Second array is all copied
input[inputArrayCounter] = auxArray[firstArrayCounter++];
}else if(auxArray[firstArrayCounter] < auxArray[secondArrayCounter]){ //Value at the top of first array is small
input[inputArrayCounter] = auxArray[firstArrayCounter++];
}else{
input[inputArrayCounter] = auxArray[secondArrayCounter++];
}
printArray(input, "mergeTemp");
}
printArray(input,lo,hi,"output");
}
private void printArray(int[] input, String label) {
System.out.print(label+ " ->{");
for (int i = 0; i < input.length; i++) {
System.out.print(input[i]);
if (i != input.length - 1)
System.out.print(" , ");
}
System.out.println("}");
}
private void printArray(int[] input,int lo, int hi, String label) {
System.out.print(label+ " -> {");
for (int i = lo; i <= hi; i++) {
System.out.print(input[i]);
if (i != input.length - 1)
System.out.print(" , ");
}
System.out.println("}");
}
}
Saturday, June 23, 2012
Merge Soft
This is how i implemented the MergeSoft in Java
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment