Algorithm 以下算法的代价函数是什么?
我知道这个算法的复杂度是O(n^2)。我找不到成本函数的具体定义。我是否应该将比较作为成本包含在循环和if语句中?如果有人能定义什么是成本函数并帮助我理解和解决这个问题,那将非常有帮助。是的,比较必须包含在成本中。大约有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的代价计算所有操作符(尽管有些操作符
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