美文网首页
数据结构与算法(1)

数据结构与算法(1)

作者: Tomy_Jx_Li | 来源:发表于2018-10-21 22:17 被阅读7次

    1 什么是时间复杂度和空间复杂度

    关于这个问题稍后再说,那么首先如果关于一段程序,我们如何知道她的效率如何呢,最好的办法就是运行它,循环1k次、1kk次、1kkk次。这样可以直观的看到的到程序的运行效率,但是如果这段程序只是刚刚在你的脑子中诞生,然后你将它记在了纸上。或者当给你一个问题的100种解法,让你初步估计这些中解法的运行效率,那么我们一个个的写一遍然后运行就显得很是麻烦和效率低下了。那么如何直观的通过观察就可以知道一个程序、算法的运行效率呢?
    答案就是分析程序运行消耗的时间和空间分析。那么为什么要从这两个角度去分析呢。我们最常听到的一段话就是时间换空间,空间换时间。那么就是运行效率越高,可能需要的存储空间就越大;而存储空间越是紧缩,那么往往需要运行的效率就会低下。如果能够两者兼容,那么这个算法只能用绝妙二字概括了。
    而时间复杂度和空间复杂度就是对这两者的分析。

    2 时间复杂度

    分析时间复杂度,可以通过一段程序来说比较更容易的理解。

            // 代码片段一
            int sum = 0;
            for (int i = 0; i < n; i++) {
                sum += i;
            }
            // 代码片段二
            int sum = 0;
            for (int i = 0; i < 100; i++) {
                sum += i;
            }
    

    如上代码片段1,因为代码的运行次数根据参数n,而参数n的值是随时发生变化的,是一个不可预测的值,所以这段代码的运行时间是O(n)
    而代码片段2,因为代码的执行次数是一个固定的值,不会因为参数的原因而变化。
    如果这两段代码在一个方法中的时候,时间复杂度仍然是O(n),因为当n足够大的时候,只执行100次的代码片段2的执行时间是可以忽略的。

    3 空间复杂度

    和时间复杂度一样

    相关文章

      网友评论

          本文标题:数据结构与算法(1)

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