我们已经知道一些算法的渐近时间复杂度是n的函数,例如
<0> O(log * n),O(log n),O(log log n),O(n ^ c),其中0我可以知道最小算法的渐近时间复杂度是n的函数吗?
更新2:O(1)是我们可以达到的最小时间复杂度,但是n的下一个最小的众所周知的函数是什么?据我研究:
O(alpha(n)):逆Ackermann:使用不相交集合的每次操作的摊销时间
或O(log * n)迭代对数Hopcroft和Ullman在不相交集上的查找算法
答案 0 :(得分:5)
除了琐碎的O(1)
之外,答案是:没有一个。
如果某些内容不是O(1)
(即n -> infinity
,则计算时间会变为无穷大),无论您找到n
的任何边界函数,总会有一个较小的函数:只是取一个边界函数的对数。你可以无限地做到这一点,因此没有最小的非常数边界函数。
然而,在实践中,当你到达inverse Ackermann function时,你应该不必担心:)
答案 1 :(得分:1)
O(1)
在复杂性方面尽可能低,严格来说1是一个有效的函数,它只是常数。 编辑:我能想到的一个非常缓慢的增长函数是iterated logarithm作为disjoint set forest的复杂性,通过路径压缩和按行级联合实现。
答案 2 :(得分:1)
无论建议什么,总会有一个“较小的算法”。
O(log log log log(n)) < O(log log log(n)) < O(log log (n)) < O(log(n)).
您可以根据需要添加log
个O(1)
。但我不知道这些是否有现实生活的例子。
所以我的回答是你会越来越接近-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
RSRecord *ar = [self.audios objectAtIndex:indexPath.row];
[self.audios removeObject:ar];
[tableView deleteRowsAtIndexPaths:[NSMutableArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}
}
。