合并排序中的基本条件

时间:2011-12-16 15:42:43

标签: 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  merge( mergeSort(a,low, mid-1), mergeSort(a, mid , high));
    }
    return //return what ?
}

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

3 个答案:

答案 0 :(得分:2)

基本条件是您有单个元素列表a,根据定义,它已经排序。回来吧。

答案 1 :(得分:1)

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

  • 基本条件 - 数组只有一个项目
  • 合并条件 - 合并了两个已排序的数组

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
}

答案 2 :(得分:0)

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