当前位置: 首页 > 面试题库 >

GroupBy运算的渐近复杂性是什么?

曾喜
2023-03-14
问题内容

我对未索引数据集上的GroupBy操作的渐近复杂度(大O)感兴趣。最著名的算法的复杂性是什么,SQL Server和LINQ使用的算法的复杂性是什么?


问题答案:

可以对已排序的行(n log(n)复杂度) 进行一次遍历(n复杂度)分组,因此分组的 复杂度为n log(n),其中n是行数。如果group
by语句中使用的每个列都有索引,则不需要排序,并且复杂度为n。



 类似资料:
  • 查找p的伪码算法为: 假设我有一个int值的数组H[1到m],其中“p”是峰值元素,如果: 基本上,如果H【p】大于或等于其相邻元素,则H【p】为峰值。 假设数组H在开始和结束时都大于1个元素,数组为H[0到m 1],其中H[0]=H[m 1]=无穷大。因此,H[0]和H[m 1]是哨兵。然后是元素p,其中1≤ p≤ n、 是一个峰值,如果H【p-1】≤ H【p】≥ H【p 1】。 我认为渐近时间

  • 问题:哪一个复杂性有我的作用?如何找出算法的时间复杂度? 该函数检查给定的int数组是否已排序。 我的代码:

  • Redis zrank。 返回存储在key处的排序集中成员的排名,分数从低到高排序。排名(或指数)是基于0的,这意味着得分最低的成员排名为0。 为什么复杂度是O(log(N))?成员按分数排序,但zank按成员查询。 我找到了一些可能是答案的东西。 A.zset由ziplist实现时 大小小于128 每个成员的大小小于64字节 所以,ziplist的大小很小,所以这不是我讨论的问题。 B.当zse

  • 将非常大的n位数字转换为十进制表示的复杂性是什么? 我的想法是,重复整数除法的基本算法,取余数得到每个数字,将具有复杂性,其中是乘法算法的复杂性;然而,除法不是2个n位数字之间的除法,而是1个n位数字和一个小常量之间的除法,因此在我看来,复杂度可能更小。

  • 问题内容: 我想知道TreeSet的部分视图的时间复杂度是多少。 假设我要添加随机数来设置(而且我不在乎重复性): 现在我将呼叫的复杂性理解为: AFAIK的复杂性,并且是O(LG N),是O(1),但对于上述的方法?我感觉很不好,它是O(K),其中K是所选子集的大小。 也许如果有某种变通办法来找到集合中某个元素的索引就足够了,因为如果我可以得到的话,可以说O(lg N)恰好是我所需要的。 问题答

  • 我有一个算法可以检查是否可以解决游戏行。游戏行是一个正整数数组,其中最后一个元素为 0。游戏标记从索引 0 开始,沿着数组移动它所在的整数指示的步数。 例如,[1,1,0]返回true,而[1,2,0]返回false。标记也可以向左或向右移动以解决游戏。也就是说,[3,3,2,2,0]是可解的。 我尝试了一些游戏行示例,并计算了最坏情况下的时间复杂度: 其他情况下给我的数字,我找不到与输入大小的关