//合并
public static int[] merge(int[] a, int[] b) {
int[] res = new int[a.length + b.length];
int k = 0;
int bIndex = 0;
int aIndex = 0;
while (aIndex < a.length && bIndex < b.length) {
if (a[aIndex] > b[bIndex]) {
res[k++] = a[aIndex++];
} else {
res[k++] = b[bIndex++];
}
}
while (aIndex < a.length) {
res[k++] = a[aIndex++];
}
while (bIndex < b.length) {
res[k++] = b[bIndex++];
}
return res;
}
public static int[] sort(int[] arr) {
//1.分为两组
int len = arr.length;
if (len == 1) {
return arr;
}
int middle = len / 2;
int[] a1 = new int[middle];
int[] a2 = new int[len - middle];
for (int i = 0; i < middle; i++) {
a1[i] = arr[i];
}
int j = 0;
for (int i = middle; i < len; i++) {
a2[j] = arr[i];
j++;
}
int[] b1 = sort(a1);
int[] b2 = sort(a2);
return merge(b1, b2);
}
java之归并算法
最新推荐文章于 2024-01-16 16:42:51 发布