原文:找出N个数中最小的k个数问题(复杂度O(N*logk))

这是一个经典的算法题,下面给出的算法都在给定的数组基础上进行,好处时不用分配新的空间,坏处是会破坏原有的数组,可以自己分配新的空间以避免对原有数组的破坏。 思路一 先直接排序,再取排序后数据的前k个数。 排序算法用最快的堆排序,复杂度也会达到O N logN . 当k接近于N时,可以用这种算法。 思路二 先排序前k个数,对于后面N k个数,依次进行插入。 时间复杂度为O k n 当k很小时,可以用 ...

2013-11-03 14:49 15 5832 推荐指数:

查看详情

给定一个长度为N的数组,找出出现次数大于n/2,n/3的数,要求时间复杂度On),空间复杂度O(1)

  先讨论出现次数大于n/2的数字,如果这样的数字存在,那么这个数出现的次数大于其他数出现的次数的总和。 在数组A中,我们定义两个数据集合a1,a2。a1为出现次数大于n/2的数的集合,a2为其余数组成的集合。对于数组 A中元素a、b,假设a不等于b,那么有两种情况,分别为:a属于a1,b属于 ...

Fri Nov 01 04:59:00 CST 2019 0 300
时间复杂度O(n)

时间复杂度 算法分析 同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。 一、时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知 ...

Thu Oct 11 18:52:00 CST 2018 0 799
复杂度O(n)计算

https://blog.csdn.net/daijin888888/article/details/66970902 一、算法的时间复杂度定义 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度 ...

Mon Oct 22 20:03:00 CST 2018 0 973
O(N)的时间寻找最大的K个数

寻找N个数中最大的K个数,本质上就是寻找最大的K个数中最小的那个,也就是第K大的数。 可以使用二分搜索的策略来寻找N个数中的第K大的数。对于一个给定的数p,可以在ON)的时间复杂度找出所有不小于p的数。 寻找第k大的元素: 如果所有N个数都是正整数,且它们的取值范围不太 ...

Mon Aug 06 18:59:00 CST 2012 4 13700
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM