gpt4 book ai didi

c# - .NET 的秒表类,行为异常

转载 作者:行者123 更新时间:2023-11-30 13:32:15 25 4
gpt4 key购买 nike

所以,我有所有的搜索算法,我正在向每个算法随机发送 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,即使它有一个正确的值 while调试。它也没有为 shell 排序和快速排序提供正确的值。

关于此的另一个尴尬部分,当我注释掉冒泡排序和选择排序时,插入将给出正确的结果,这对所有算法都是如此,如果我按顺序将它们设为第一个,我会得到正确的结果,我展示了这个对我的 friend 们来说,他们也没有任何线索,这真的完全没有意义......

最佳答案

如果数组已经排序,您的插入排序可能没有任何作用并在不到 1 毫秒内完成。如果您之前的排序让数组排序,那是可能的。

(编辑 - 我显然很难输入“可能”而不是“可能”这个词......已更正。)

关于c# - .NET 的秒表类,行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15203286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com