经验总结

作者: Shun2018 | 来源:发表于2018-04-01 22:54 被阅读0次

    经验总结

    时间复杂度:

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

    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,可以使用布隆过滤器,以后再研究

    。。。待续 。。。

    。。。待续。。。

    相关文章

      网友评论

        本文标题:经验总结

        本文链接:https://www.haomeiwen.com/subject/rrgacftx.html