最佳和最坏情况 - 时间复杂性

时间:2015-02-17 23:25:21

标签: algorithm time complexity-theory

我必须找到算法的最佳和最差情况,但我不了解结果:

int chOne=1; 
for (int i=0; i<list.lenght; i++) 
    if(list[i]<list[chOne]){ 
       chOne=i;
    } 
return chOne;

BC:2C + 2C(N-1)= 2 CN
WC:2C + 3C(N-1)= 3 CN-C

我不知道什么是&#34; n-1&#34 ;;并且遵循其他类似的练习,它(我认为)

BC:5c中
WC:3C + 2CN

有人能告诉我为什么不是这样的? 谢谢!

1 个答案:

答案 0 :(得分:1)

精确数字取决于您在算法模型中考虑原子操作的内容。

然而,它始终坚持

  • 访问整个列表,增加当前索引i,测试循环终止并在每次迭代中检查新的最小值。
  • 每当列表中当前访问的元素小于chOne索引的当前最小候选者时,就会发生更新操作。

所以你最好的情况是,当没有发生更新时(如果chOne的初始选择索引最小的列表元素就是这种情况),并且在最坏的情况下,每次迭代发生更新但是1,后者是当前列表索引等于chOne的原始选择时的迭代(要么已经有更新,那么当前索引元素不能小于当前选择,或者原始索引chocie已经{ {1}},然后两个索引都是相同的。)

使用0代表列表长度,n作为每次迭代的固定成本和2c c更新的成本,您需要保证一次迭代成本chOne2c次迭代,每项费用至少为n-1,可能为2c