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
,因为它已经排序(它最多包含一个元素)。排序方法有两个返回条件:
- 基本条件-数组只有一项
- 合并条件-已合并两个已排序的数组
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
}