我有以下冒泡排序算法:
public void BubbleSort(int[] arr, int start, int end)
{
int instructions = 0;
bool swapped = true;
while (swapped)
{
swapped = false;
for (int i = 0; i < arr.Length - 1; i++)
{
//instructions++;
for (int j = i + 1; j < arr.Length; j++)
{
instructions++;
if (arr[i] > arr[j])
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
swapped = true;
}
}
}
}
Console.WriteLine("instructions++ " + instructions);
}
如果你打印instructions
,你会看到它正是:(n ^ 2) - n
那么为什么我们不理会-n?
它是否被认为是常量,即使它对输入大小是可变的(这会很奇怪,买嘿......)?
答案 0 :(得分:2)
时间强制就是这样。对于这种情况下的大n值,线性n无关紧要。例如,如果我们谈论的是1000万个数字,则值(10 ^ 6)^ 2远大于10 ^ 6。因此,即使它存在,另一个因素也会使大型n相形见绌,因此更容易忽视它。