だから、私はすべての検索アルゴリズムを持っており、各アルゴリズムに20000の乱数を送信して、それぞれにかかる時間を把握しようとしています。
public void functionsForSorts(int[] array)
{
Stopwatch sw = new Stopwatch();
long elapsedTime = sw.ElapsedTicks;
if (array.Length == 20000)
{
sw.Start();
BubbleSort.Bubble(array);
sw.Stop();
elapsedTime = sw.ElapsedMilliseconds;
label1.Text += "\t" + elapsedTime.ToString() + " miliseconds ";
Application.DoEvents();
sw.Restart();
SelectionSort.Selection(array);
sw.Stop();
elapsedTime = sw.ElapsedMilliseconds;
label2.Text += "\t" + elapsedTime.ToString() + " miliseconds ";
Application.DoEvents();
sw.Restart();
InsertionSort.Insertion(array);
sw.Stop();
elapsedTime = sw.ElapsedMilliseconds;
label3.Text += "\t" + elapsedTime.ToString() + " miliseconds ";
Application.DoEvents();
sw.Restart();
MergeSort.mergeSort(array, 0, array.Length - 1);
sw.Stop();
elapsedTime = sw.ElapsedMilliseconds;
label4.Text += "\t" + elapsedTime.ToString() + " miliseconds ";
Application.DoEvents();
sw.Restart();
ShellSort.Shell(array);
sw.Stop();
elapsedTime = sw.ElapsedMilliseconds;
label5.Text += "\t" + elapsedTime.ToString() + " miliseconds ";
Application.DoEvents();
sw.Restart();
QuickSort.Quicksort(array, 0, array.Length - 1);
sw.Stop();
elapsedTime = sw.ElapsedMilliseconds;
label6.Text += "\t" + elapsedTime.ToString() + " miliseconds ";
Application.DoEvents();
}
問題は、ストップウォッチが適切な結果をもたらさないことです。バブルソート、選択ソート、マージソートでは問題なく動作しますが、デバッグ中に適切な値を持っていても、挿入ソートには常に0を書き込みます.andシェルソートとクイックソートにも適切な値が与えられません。
これに関するもう1つの厄介な部分は、バブルと選択ソートをコメントアウトすると、挿入により適切な結果が得られることです。これはすべてのアルゴリズムに当てはまります。それらを順番に1番目にすると、適切な結果が得られます。これを友達に見せました、彼らも何の手がかりも持っていません、これは本当にまったく意味がありません...