Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 交换数组元素与数组索引的效率_C#_Arrays_Sorting_Compare And Swap - Fatal编程技术网

C# 交换数组元素与数组索引的效率

C# 交换数组元素与数组索引的效率,c#,arrays,sorting,compare-and-swap,C#,Arrays,Sorting,Compare And Swap,我有一个简单的问题:我知道这两个代码片段的复杂性是相同的。然而,我想知道哪一个比较好,为什么?这是选择排序代码: 这是我写的: for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j <= n - 1; j++) { if (a[j] < a[i])

我有一个简单的问题:我知道这两个代码片段的复杂性是相同的。然而,我想知道哪一个比较好,为什么?这是选择排序代码:

这是我写的:

            for (int i = 0; i < n - 1; i++)
            {
                for (int j = i + 1; j <= n - 1; j++) 
                {
                    if (a[j] < a[i]) 
                    {
                        int temp = a[i];
                        a[i] = a[j];
                        a[j] = temp;
                    }
                }
            }
这是我朋友写的:

            for (int i = 0; i < n - 1; i++)
            {
                int iMin = i; 
                for (int j = i + 1; j <= n - 1; j++) 
                {
                    if (a[j] < a[i]) 
                    {
                        iMin = j;
                    }
                    int temp = a[i];
                    a[i] = a[iMin];
                    a[iMin] = temp;
                }
            }

您的代码速度稍快,因为您仅在a[j]
这两种代码的复杂度实际上是相同的,但常数更小,因此代码更快。

如果你有两匹马,你想知道为什么其中一匹马更快,为什么不自己比赛呢?你为什么要我们告诉你哪个更快?这不是关于哪个更快。我还没有问他,但我只是想了解是否有一个逻辑解释,不直接在块内交换元素。这仅仅是一种好的编程技术,还是一种高效的编程技术?它可能不会产生太大的实际影响,但第一种显然更好。好的,谢谢。