Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 逐行查找计数排序算法的复杂性_Algorithm_Sorting_Time Complexity_Counting Sort - Fatal编程技术网

Algorithm 逐行查找计数排序算法的复杂性

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]

你好吗?向你们大家问好。 我有一个任务,那就是找到计数算法的复杂性,逐行排序,最终找到T(n)。事实上,这对我来说是一个相当复杂的问题,但我一直在研究这个问题,所以我想知道是否有人知道这是对的还是错的。 伪代码:

                                          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。了解这一点需要知道成本分析和重复是否合适