经验总结

经验总结

时间复杂度:

同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。

O(n)也是差不多的意思,也就是说n很大的时候复杂度约等于Cn,C是某个常数。

O(1)就是说n很大的时候,复杂度基本就不增长了,基本就是个常量C。

代码实例:去除给定列表中的重复元素

MyList = [1, 2, 4, 7, 2, 7, 4, 8, 3, 9, 1]

ResultList = list()

for item in MyList:

    if item not in ResultList:

        ResultList.append(item)

以上代码可以得到预期的结果,但是算法存在问题。

如果给定的列表很庞大,会存在以下问题:

1、在if做not in成员判断的时候,时间复杂度是O(1);

2、列表的一次性读取,会很消耗内存。

针对问题1,改写如下:

MyList = [1, 2, 4, 7, 2, 7, 4, 8, 3, 9, 1]

ResultList = list()

ResultSet = set()

for item in MyList:

    if item not in ResultSet:

        ResultList.append(item)

        ResultSet.add(item)

set在做成员判断的时候,时间复杂度是O(1)的,比list要快,规模越大,效果越明显。

针对问题2,可以使用布隆过滤器,以后再研究

。。。待续 。。。

。。。待续。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 0. 季度目标关注的核心问题回答 我的二季度发展策略如下: 这里是策略说明 1. Q1 的整体情况分析 这里上传生...
    追追风的冰阅读 307评论 0 0
  • 老人拄着拐杖 每天象一尊孤零的雕像 立在村口望呀望 望着亲人们打工的方向 盼呀!盼呀! 盼得挂肚牵肠 盼得老眼昏花...
    王小永_6be2阅读 262评论 10 40
  • 珠山唯有绿青松, 半坡衰草偎鳥鸣。 南天风雨催芽疾, 满是健步绕圈人。 奔流退去家朋傥, 半亭风月撫琴声。 遠盼校...
    A都督阅读 389评论 0 0
  • 485[思路]: 寻找0.1序列中连续为1的子序列的长度; 遍历一次,统计;
    安东可阅读 98评论 0 0
  • 春天是很容易做梦的季节,倒是不错,从寒假到现在我都一直做梦,梦里好像真实又遥远,有时候我会惊醒,有时候会落空...
    去冰柠檬蜜阅读 159评论 2 0