import java.util.Random;
public class testmergesort {
public static void main(String[] args) {
int ary[] = getArray(100);
show(ary, "ary");
show(sort(ary, 1), "result");
}
private static int[] sort(int[] ary, int step) {
int j = 0;//
int k = 0;//
int copyary[] = new int[ary.length];
for (int a = 0; a < ary.length; a++) {
copyary[a] = ary[a];
}
int start = 0;
for (int i = 0; i < ary.length; i++) {
if (k == step && j == step) {
start = i;
k = 0;
j = 0;
}
if (j == step) {
ary[i] = copyary[start + k + step];
k++;
continue;
}
if (k == step) {
ary[i] = copyary[start + j];
j++;
continue;
}
if (start + k + step >= ary.length) {
ary[i] = copyary[start + j];
j++;
continue;
}
if (copyary[start + j] < copyary[start + k + step]) {
ary[i] = copyary[start + j];
j++;
} else {
ary[i] = copyary[start + k + step];
k++;
}
}
if (step <= ary.length / 2){
step = step * 2;
ary = sort(ary, step);
}
return ary;
}
private static void show(int ary[], String name) {
System.out.print(name + ":{");
for (int i = 0; i < ary.length; i++) {
System.out.print(ary[i] + ",");
}
System.out.println("}");
}
public static int[] getArray(int length) {
int[] result = new int[length];
Random random = new Random();
for (int i = 0; i < length; i++) {
result[i] = random.nextInt(100);
}
return result;
}
}
java归并排序
最新推荐文章于 2021-01-18 16:19:08 发布