import java.util.Arrays;
public class mergesort1 {
public static void merge(int a[], int l, int mid, int r) {
int i = l;
int j = mid + 1;
int k = l;
int[] b = new int[4];
while (i <= mid && j <= r) {
if (a[i] < a[j]) {
b[k] = a[i];
i++;
} else {
b[k] = a[j];
j++;
}
k++;
}
if (i > mid) {
while (j <= r) {
b[k] = a[j];
j++;
k++;
}
} else {
while (i <= mid) {
b[k] = a[i];
i++;
k++;
}
}
for (k = l; k <= r; k++) {
a[k] = b[k];
}
}
public static void mergesort(int a[], int l, int r) {
if (l < r) {
int mid = l + r / 2;
mergesort(a, l, mid);
mergesort(a, mid + 1, r);
merge(a, l, mid, r);
}
}
public static void main(String[] args) {
int[] a = {
4,
2,
3,
1
};
int l = 0;
int r = a.length - 1;
mergesort(a, l, r);
for (int k = 0; k < a.length; k++) {
System.out.print(a[k] + " ");
}
}
}
操作的优先顺序,这个
int mid = l + r / 2;
应该
int mid = (l + r) / 2;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句