Skip to content

Instantly share code, notes, and snippets.

@biskandar
Created October 18, 2016 18:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save biskandar/9c6877583e7974c48455134265c8b97d to your computer and use it in GitHub Desktop.
Save biskandar/9c6877583e7974c48455134265c8b97d to your computer and use it in GitHub Desktop.
Java: Merge Sort 1
package introalgo.chap2;
import java.util.Random;
public class MergeSort1 {
static int[] init( int max ) {
int[] data = new int[max];
Random random = new Random();
for (int i = 0; i < data.length; i++) {
data[i] = 100 + random.nextInt(900);
}
return data;
}
static void print( int[] data ) {
for (int i = 0; i < data.length; i++) {
System.out.printf("%d ", data[i]);
}
System.out.println();
}
static void merge( int[] data , int p , int q , int r ) {
int lenLeft = q - p;
int lenRight = r - q + 1;
int[] dataLeft = new int[lenLeft];
int[] dataRight = new int[lenRight];
for (int i = 0; i < lenLeft; i++) {
dataLeft[i] = data[p + i];
}
for (int i = 0; i < lenRight; i++) {
dataRight[i] = data[q + i];
}
print(dataLeft);
print(dataRight);
for (int i = 0, j = 0, k = p; k <= r; k++) {
System.out.printf("%d %d %d \n", k, i, j);
if ((i < dataLeft.length) && (j < dataRight.length)) {
if (dataLeft[i] <= dataRight[j]) {
data[k] = dataLeft[i];
i = i + 1;
} else {
data[k] = dataRight[j];
j = j + 1;
}
} else {
if (i < dataLeft.length) {
data[k] = dataLeft[i];
i = i + 1;
}
if (j < dataRight.length) {
data[k] = dataRight[j];
j = j + 1;
}
}
} // for (int i = 0, j = 0, k = p; k <= r; k++) {
}
public static void main( String[] args ) {
int[] data = init(10);
print(data);
int p = 0 , q = 5 , r = 9;
merge(data, p, q, r);
print(data);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment