對於學校任務,我必須實施mergesort。我在這個C#mergesort算法中做錯了什麼?
我用這個代碼做的伎倆:
static int[] MergeSort(int[] C)
{
int left = 0;
int right = C.Length;
int middle = (left + right)/2;
int[] A, B;
A = new int[middle];
B = new int[middle];
if (C.Length == 0 || C.Length == 1)
{
return C;
}
else
{
for (int i = left; i < middle; i++)
{
A[i] = C[i];
B[i] = C[middle + i];
}
MergeSort(A);
MergeSort(B);
return Merge(A, B, C);
}
}
static int[] Merge(int[] A, int[] B, int[] C)
{
int i, j, k;
i = j = k = 0;
int n = A.Length;
int m = B.Length;
int c = C.Length;
int middle = C.Length/2;
while (i < n && j < m)
{
if (A[i] < B[j])
{
C[k] = A[i];
i++;
}
else
{
C[k] = B[j];
j++;
}
k++;
if (i == n)
{
for (int b = i; b < B.Length; b++)
{
C[middle + b] = B[b];
}
}
else
{
for (int a = i; a < A.Length; a++)
{
C[middle + a] = A[a];
}
}
}
return C;
}
它不適合很多不同行的工作,雖然。我已經調試過並檢查約束是否有問題,但我似乎無法找到問題。
在此先感謝!
謝謝!這將有助於我在將來更好地編寫這些問題。我希望。 – user1727194