Algorithm 逐行查找计数排序算法的复杂性
你好吗?向你们大家问好。 我有一个任务,那就是找到计数算法的复杂性,逐行排序,最终找到T(n)。事实上,这对我来说是一个相当复杂的问题,但我一直在研究这个问题,所以我想知道是否有人知道这是对的还是错的。 伪代码:Algorithm 逐行查找计数排序算法的复杂性,algorithm,sorting,time-complexity,counting-sort,Algorithm,Sorting,Time Complexity,Counting Sort,你好吗?向你们大家问好。 我有一个任务,那就是找到计数算法的复杂性,逐行排序,最终找到T(n)。事实上,这对我来说是一个相当复杂的问题,但我一直在研究这个问题,所以我想知道是否有人知道这是对的还是错的。 伪代码: cost repetitions for i = 1 to k do 2 k+1 c[i]
cost repetitions
for i = 1 to k do 2 k+1
c[i] = 0 1 k
for j = 1 to n do 2 n+1
c[A[j]] = c[A[j]] + 1 2 n
for i = 2 to k do 2 k+2
c[i] = c[i] + c[i-1] 2 k
for j = n-1 downto 1 do 2 n+1
B[ c[A[j]]] = A[j] 1 n
c[A[j]] = c[A[j]] - 1 2 n
因此t(n)=2k+2+k+2n+2+2n+2k+4+2k+2n+2+n+n
T(n)=7k+8n+8
我不是很确定这个分析,但这是我能做的最好的:v。谢谢你的建议所以你有
θ(k+n)
复杂性(常数因子被忽略)谢谢你的回答。是的,我知道,但我需要知道逐行分析是否做得很好。也就是说,如果他们被很好地分析,因为我必须找到证人c1和c2进行渐近分析。这不是简单的问题-答案取决于协议:你应该考虑什么操作?您可以获得+/-和赋值的数量,但忽略间接寻址,如c[A[j]
和B[c[A[j]]]
(可能在较低级别使用加法)。循环步骤是否应该包含两个操作(递增和检查)?您应该考虑哪些操作?-我已经研究过,您应该始终考虑最坏的情况,即算法必须对所有数字进行排序。循环步骤应该包括两个操作(增量和检查)?我研究的是,如果是赋值,那么成本现在是1,如果是赋值,和是2。了解这一点需要知道成本分析和重复是否可行,因此您有Theta(k+n)
complexity(常数因子被忽略),谢谢您的回答。是的,我知道,但我需要知道逐行分析是否做得很好。也就是说,如果他们被很好地分析,因为我必须找到证人c1和c2进行渐近分析。这不是简单的问题-答案取决于协议:你应该考虑什么操作?您可以获得+/-和赋值的数量,但忽略间接寻址,如c[A[j]
和B[c[A[j]]]
(可能在较低级别使用加法)。循环步骤是否应该包含两个操作(递增和检查)?您应该考虑哪些操作?-我已经研究过,您应该始终考虑最坏的情况,即算法必须对所有数字进行排序。循环步骤应该包括两个操作(增量和检查)?我研究的是,如果是赋值,那么成本现在是1,如果是赋值,和是2。了解这一点需要知道成本分析和重复是否合适