Java 合并排序中的基条件

Java 合并排序中的基条件,java,algorithm,sorting,mergesort,Java,Algorithm,Sorting,Mergesort,我正在尝试实现合并排序,但在实现基本条件时遇到问题 我有一个函数merge,它接受两个排序的数组并返回一个合并的数组 int[] merge(int[] a , int[] b) 现在,我的合并排序例程如下所示 private static int[] mergeSort(int[] a, int low , int high) { int mid = (low + high) /2; if (low < high) { return mer

我正在尝试实现合并排序,但在实现基本条件时遇到问题

我有一个函数
merge
,它接受两个排序的数组并返回一个合并的数组

int[] merge(int[] a , int[] b)
现在,我的合并排序例程如下所示

private static int[] mergeSort(int[] a, int low , int high)
{
    int mid = (low + high)  /2;
    if (low  < high)
    {
        return  merge( mergeSort(a,low, mid-1), mergeSort(a, mid , high));
    }
    return //return what ?
}
private static int[]mergeSort(int[]a,int-low,int-high)
{
int mid=(低+高)/2;
如果(低<高)
{
返回merge(mergeSort(a,low,mid-1),mergeSort(a,mid,high));
}
返回//返回什么?
}

这里的基本条件是什么?我犯了什么错误

基本条件是当您有单个元素列表
a
,根据定义,该列表已排序。只需返回它。

只需返回
a
,因为它已经排序(它最多包含一个元素)。

排序方法有两个返回条件:

  • 基本条件-数组只有一项
  • 合并条件-已合并两个已排序的数组
merge方法应该接受两个排序数组并返回一个排序数组

public int[] sort(int[] input){
  int mid = input.length/2;
  if(input.length > 1){
    // create and populate left and right arrays to merge
    // left  => input[0   > mid-1]
    // right => input[mid > input.length]
    return merge(sort(left), sort(right));
  }
  return input;
}

public int[] merge(int[] left, int[] right){
  // your merge logic
}