поэтому у меня есть все алгоритмы поиска, и я отправляю случайные 20000 номеров в каждый алгоритм, пытаясь выяснить, сколько времени займет каждый..NET Секундомер класса, ведет себя странно
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 для сортировки вставок, даже если он имеет правильное значение при отладке. И он не дает правильных значений для сортировки оболочки и быстрого сортировки.
Еще одна неудобная часть об этом, когда я комментирую пузырь и сортировку сортировки, Вставка даст правильные результаты, это верно для всех алгоритмов, если я сделаю их 1-й по порядку, im получаю надлежащие результаты, я показал это моим друзьям, они не имеют никакого понятия, либо, это действительно не имеет смысла вообще ...
Можете ли вы показать нам весь код? –
Можете ли вы попробовать тест с какой-либо другой случайной операцией, такой как 'label1.Tag = sw.ElapsedMillilseconds.ToString()' вместо 'i5k.Insertion (array)' просто чтобы увидеть, имеет ли операция сортировки какое-либо отношение к ней - - чтобы убедиться, что вы получаете 0 на * любой * операции, выполненной в этой позиции? – BlueMonkMN
На самом деле, если вы просматриваете миллисекунды вместо тиков, вам придется использовать более длительную операцию, например 'System.Threading.Thread.sleep (1000)'. – BlueMonkMN