C# 秒表显示错误的时间?

C# 秒表显示错误的时间?,c#,C#,但它的输出与此相近: randomArray = randomizedArray (Convert.ToInt32(textBox1.Text), Convert.ToInt32(textBox2.Text)); randomArrayGnome = randomArray; randomArrayBubble = randomArray; randomArrayIns

但它的输出与此相近:

            randomArray = randomizedArray
                (Convert.ToInt32(textBox1.Text), Convert.ToInt32(textBox2.Text));
            randomArrayGnome = randomArray;
            randomArrayBubble = randomArray;
            randomArrayInsertion = randomArray;

            GnomeSort(randomArray);
            BubbleSort(randomArrayBubble);

但是如果我切换呼叫顺序,时间会截然不同,而气泡排序可能需要6秒钟。这里发生了什么?为什么排序不正确?

您的问题在于数组的初始化。如图所示:

Gnome Sorting completed, total time taken 00:00:02.5419864
Bubble Sorting completed, total time taken 00:00:00.0003556
上面的代码创建了四个变量,它们都引用相同的数组。因此,第一个排序算法对数组进行排序,后续算法将遇到一个已排序的数组,因此执行速度非常快

简单的解决方案是使用Linq-ToList克隆阵列:

        randomArray = randomizedArray
            (Convert.ToInt32(textBox1.Text), Convert.ToInt32(textBox2.Text));
        randomArrayGnome = randomArray;
        randomArrayBubble = randomArray;
        randomArrayInsertion = randomArray;

您的问题在于数组的初始化。如图所示:

Gnome Sorting completed, total time taken 00:00:02.5419864
Bubble Sorting completed, total time taken 00:00:00.0003556
上面的代码创建了四个变量,它们都引用相同的数组。因此,第一个排序算法对数组进行排序,后续算法将遇到一个已排序的数组,因此执行速度非常快

简单的解决方案是使用Linq-ToList克隆阵列:

        randomArray = randomizedArray
            (Convert.ToInt32(textBox1.Text), Convert.ToInt32(textBox2.Text));
        randomArrayGnome = randomArray;
        randomArrayBubble = randomArray;
        randomArrayInsertion = randomArray;

randomary
randomArrayGnome
都包含对
randomizedaray
的引用

当你打电话的时候

        randomArray = randomizedArray
            (Convert.ToInt32(textBox1.Text), Convert.ToInt32(textBox2.Text));
        randomArrayGnome = randomArray.ToList();
引用数组已排序,
BubbleSort
正在处理已排序的数组


您可以使用
Array.Clone()
创建四个不同的引用

随机数组
随机数组名称
都包含对
随机数组
的引用

当你打电话的时候

        randomArray = randomizedArray
            (Convert.ToInt32(textBox1.Text), Convert.ToInt32(textBox2.Text));
        randomArrayGnome = randomArray.ToList();
引用数组已排序,
BubbleSort
正在处理已排序的数组

您可以使用
Array.Clone()
创建四个不同的引用