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]
这两种代码的复杂度实际上是相同的,但常数更小,因此代码更快。如果你有两匹马,你想知道为什么其中一匹马更快,为什么不自己比赛呢?你为什么要我们告诉你哪个更快?这不是关于哪个更快。我还没有问他,但我只是想了解是否有一个逻辑解释,不直接在块内交换元素。这仅仅是一种好的编程技术,还是一种高效的编程技术?它可能不会产生太大的实际影响,但第一种显然更好。好的,谢谢。