合并排序程序不排序数字

斯瓦普尼尔·戈希尔
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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章