using System;
namespace MergeSort
{
class Program
{
static int[] vektor = { 5, 7, 8, 9, 1, 2, 23, 4 };
static int[] delVektor;
static int counter = 0;
static void Main(string[] args)
{
PrintVektor(vektor);
Merge(0, vektor.Length - 1);
Console.WriteLine("--------");
PrintVektor(vektor);
Console.ReadKey();
}
static void PrintVektor(int[] vektor)
{
foreach (var item in vektor)
{
Console.WriteLine(item.ToString() + " ");
}
}
static void Merge(int start, int stop)
{
if (start >= stop)
return;
int middle = (start + stop) / 2;
Merge(start, middle);
Merge(middle + 1, stop);
delVektor = new int[stop - start + 1];
int indexStart = start;
int indexStop = middle + 1;
while (indexStart <= middle && indexStop <= stop)
{
if (vektor[indexStart] < vektor[indexStop])
{
delVektor[counter] = vektor[indexStart];
indexStart++;
counter++;
}
else
{
delVektor[counter] = vektor[indexStop];
indexStop++;
counter++;
}
}
while (indexStart <= middle)
{
delVektor[counter] = vektor[indexStart];
indexStart++;
counter++;
}
while (middle <= stop)
{
delVektor[counter] = vektor[indexStop]; // <---- here i get index out of range
indexStop++;
counter++;
}
for (int i = 0; i <= delVektor.Length - 1; i++)
{
vektor[start + i] = delVektor[i];
}
}
}
}
問題は、インデックスが範囲外の例外を取得することです(コードにコメントしました)、
while (middle <= stop) {
delVektor[counter] = vektor[indexStop]; // <---- here i get index out of range
indexStop++; counter++;
}
わからない
何が間違っているのかわかりません。私はこのコードをずっと見つめているので、修正しようとしたらすぐにコンピューターをウィンドウから外したいと思っています。