迭代排序算法的运行时间分析

时间:2015-10-04 23:50:25

标签: algorithm sorting time-complexity analysis

我正在学习如何为算法的运行时间编写理论分析,我想知道对于以下代码是否正确:

while(high >= low) {
     loop body here....
     high--;
     low++;
}

对于N个整数的数组,其中low从索引0开始,而high从索引N-1开始。循环体将运行(n / 2) times,或者它将进行(n / 2) + 1比较。说这个是正确的吗?如果是这样,为了获得整个函数的完整运行时分析,您是否会评估任何内部循环以创建运行时的完整函数?

1 个答案:

答案 0 :(得分:1)

在代码中名为loop body here.....的代码部分中,您可能会运行某些其他循环,其复杂度为某些f(n)。如果n为偶数,给定的while循环将运行 n / 2 次,如果n为奇数,则给出(n / 2)+ 1 次。

因此,外环的运行时间复杂度只是 O(n / 2)= O(n)

现在,

  • 如果loop body here.....代码部分摆弄high和/或low,则此while循环的复杂程度会有所不同。
  • 如果loop body here.....代码段是O(1)并且它没有修改high和/或low,则整个运行时间为O(n)
  • 如果loop body here.....代码段是O(n)并且它没有修改high和/或low,那么整个运行时间就是O(n < SUP> 2 )。
  • 一般情况下,如果loop body here.....代码部分为O(f(n))并且它没有修改high和/或low,则整体运行 - 时间是O(n * f(n))。