-1
我有一個快速問題:我知道這兩個片段的複雜性是相同的。然而,我想知道哪一個比較好,爲什麼?這是選擇排序代碼:交換數組元素的效率vs數組索引
這是我寫的:
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;
}
}
如果你有兩匹馬,並且你想知道爲什麼一匹馬更快,爲什麼你不自己比賽呢?你爲什麼要求我們告訴你哪個更快? –
這不是關於哪個更快。我還沒有問他,但我只是想了解是否有一個合理的解釋,不直接在塊內交換元素。這只是一種好的編程技術,還是關於效率? –
它可能沒有太大的實際差異,但第一個顯然更好。 –