Algorithm 以下算法的代价函数是什么?

Algorithm 以下算法的代价函数是什么?,algorithm,data-structures,time-complexity,Algorithm,Data Structures,Time Complexity,我知道这个算法的复杂度是O(n^2)。我找不到成本函数的具体定义。我是否应该将比较作为成本包含在循环和if语句中?如果有人能定义什么是成本函数并帮助我理解和解决这个问题,那将非常有帮助。是的,比较必须包含在成本中。大约有n^2/8比较给出了二次复杂度 请注意,您不知道交换的实际数量,但这一事实并不影响复杂性。操作的数量从n^2/8到4*n^2/8不等,但这两个表达式都属于Theta(n^2)类 准确的成本计算取决于您的书本方法和讲师意愿:) 一般来说,必须以1的代价计算所有操作符(尽管有些操作符

我知道这个算法的复杂度是O(n^2)。我找不到成本函数的具体定义。我是否应该将比较作为成本包含在循环和if语句中?如果有人能定义什么是成本函数并帮助我理解和解决这个问题,那将非常有帮助。

是的,比较必须包含在成本中。大约有
n^2/8
比较给出了二次复杂度

请注意,您不知道交换的实际数量,但这一事实并不影响复杂性。操作的数量从
n^2/8
4*n^2/8
不等,但这两个表达式都属于
Theta(n^2)

准确的成本计算取决于您的书本方法和讲师意愿:)

一般来说,必须以1的代价计算所有操作符(尽管有些操作符可能像for循环那样内部复杂)。例如,对于i=0,
。。。n/2
给出了成本
n/2
,两者都
表示j=0。。。i
如果arr[j]>arr[n-i-1]
给出成本
k=n/2*(n/2-1)/2
和互换给出范围
k..3k的成本

所以总成本是

input : arr[n]
output : median value of arr

for i = 0 ... n/2
  for j = 0 ... i
      if arr[j] > arr[n-i-1]
         temp = arr[j]
         arr[j] = arr[n-i-1]
         arr[n-i-1] = temp

x取决于数据,范围在1…3 /p> 中,您应该考虑< <代码> < <代码> >循环>代码> > < < /COD>语句>次数> <代码> >循环运行

,您能否给出代价函数的明确定义?将注释移到答案中。
n/2 + 2 * n/2*(n/2-1)/2 + x * n/2*(n/2-1)/2