【发布时间】:2017-07-07 07:45:38
【问题描述】:
我有一个简单的问题:我知道这两个 sn-ps 的复杂性是相同的。但是,我想知道哪个比较好,为什么?这是选择排序代码:
这是我写的:
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;
}
}
【问题讨论】:
-
如果你有两匹马,你想知道为什么一匹跑得更快,你为什么不自己赛马呢?为什么要我们告诉你哪个更快?
-
这不是关于哪个更快。我还没有问他,但我只是想了解是否有合理的解释不直接在块内交换元素。仅仅是好的编程技术还是效率?
-
它可能没有太大的实际差异,但第一个显然更好。
标签: c# arrays sorting compare-and-swap