【发布时间】:2014-04-22 10:33:30
【问题描述】:
public static void Merge(int[] arr,int p,int q,int r )
{
int n1 = q-p;
int n2 = r-q;
int[] L=new int[n1];
int[] R = new int[r-n2];
for (int i = 0; i < n1; i++)
L[i] = arr[i];
foreach (int x in L)
Console.WriteLine(x);
for (int i = 0; i < n2; i++)
R[i] = arr[q+i];
Console.WriteLine("New part");
foreach (int x in R)
Console.WriteLine(x);
int k=0, d=0;
for (int i = p; i < r; i++)
{
if (L[k] <= R[k])
{
arr[i] = L[k];
k++;
}
else
{
arr[i] = R[d];
d++;
}
}
}
上面的代码显示exception(index out of bound when I call from main() method using Merge(arr,0,0,12)。其中 arr 是一个长度为 12 的 int 数组。
【问题讨论】:
-
请添加堆栈跟踪,以及用于从 Main() 调用方法的代码。
-
说真的,一个没有包含几乎足够的信息来解决它甚至没有问号的问题怎么能获得多个赞成?
-
@Heuster 我想知道完全相同的事情。今晚我看到很多人对非常糟糕的问题表示赞成
-
请正确命名变量。 p,q,r 没有意义