Итак, у меня есть все алгоритмы поиска, и я отправляю 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 для сортировки вставками, хотя при отладке он имеет правильное значение. и он также не дает правильных значений для сортировки оболочки и быстрой сортировки.
Еще одна неловкая часть этого, когда я комментирую пузырек и сортировку выбором, вставка даст правильные результаты, это верно для всех алгоритмов, если я сделаю их первыми по порядку, я получаю правильные результаты, я показал это своим друзьям , они тоже не имеют ни малейшего понятия, это действительно не имеет никакого смысла...
label1.Tag = sw.ElapsedMillilseconds.ToString()
вместоi5k.Insertion(array)
, просто чтобы посмотреть, имеет ли какое-либо отношение к ней операция сортировки — чтобы посмотреть, получите ли вы 0 в любой операции, выполненной в этом позиция? - person BlueMonkMN   schedule 04.03.2013System.Threading.Thread.sleep(1000)
. - person BlueMonkMN   schedule 04.03.2013Stopwatch
является частью .NET, а не частью C#. - person John Saunders   schedule 04.03.2013