【发布时间】:2016-06-04 15:49:02
【问题描述】:
我有以下插入排序算法实现:
private static void InsertionSort(List<int> array)
{
for (int i = 1; i < array.Count; ++i)
{
for (int j = i; j > 0 && array[j - 1] > array[j]; --j)
{
//swap(array, j, j-1);
int temp = array[j];
array[j] = array[j-1];
array[j-1] = temp;
}
}
}
private static void swap(List<int> array, int i, int j)
{
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
当我使用swap(array, j, j-1); 运行我的算法时,它比我使用内联函数体需要更多的时间(50000 个元素+2 秒)。
为什么?
【问题讨论】:
-
我认为这是发布版本? (相关链接:stackoverflow.com/q/15713910/11683、stackoverflow.com/q/473782/11683)
-
“swap”的数组参数不需要说“ref”吗?
-
我认为没有。这是 C#
-
您如何衡量时间?发布所有代码。还要检查这个:dotnetperls.com/optimization
-
我将秒表用于两种算法。就是这样。
标签: c# algorithm performance