【发布时间】:2015-01-17 13:34:33
【问题描述】:
在最近的一次采访中,我被要求编写排序算法。我按照以下方式做到了。我想了解这种方法有什么问题?当我用 500 个整数进行测试时,它比冒泡排序给出了更好的时间复杂度。我问的原因是,那个面试官让我失望了。
static int[] SortedNumbers(int[] numbers)
{
for (int i = 0; i < numbers.Length - 1; i++)
{
int temp;
if (numbers[i] > numbers[i + 1])
{
temp = numbers[i];
numbers[i] = numbers[i + 1];
numbers[i + 1] = temp;
}
if (i > 0)
{
for (int j = 0; j < i; j++)
{
if (numbers[j] > numbers[i])
{
temp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = temp;
}
}
}
}
return numbers;
}
【问题讨论】:
-
您需要了解 Big-Oh 分析。拿起一本算法书。
-
我同意所有其他答案和 cmets,但我必须指出
if (i > 0)是完全没有必要的。
标签: c# bubble-sort