zoukankan      html  css  js  c++  java
  • 关于时间复杂度与空间复杂度

    时间复杂度:即算法中执行基本操作的次数,对于非递归算法,主要是建立算法的基本操作的执行次数的求和表达式,然后确定“和函数”的增长次数。而对于递归算法,主要是建立算法的基本操作执行次数的递推关系式,然后确定他的增长次数。

    空间复杂度:即运行所需要的额外存储空间数量。

    常见的算法渐进效率类型:

    0(1) : 即常量 

    O(log n):即对数

    O(n):即线性,常见的如顺序表查找

    O(n log n):常见的如合并排序和快排的平均效率

    O(n!):即阶乘,完全排列算法

    附:一道比较典型的笔试题目:一个未排序的整数数组,有正数也有负数,输出一个负数在前面,整数在后面的数组,正负数无序,要求时间复杂度o(n),空间复杂度o(1)

    例如

    input 1,-1,4,9,-3  

    output -1,-3,1,4,9

    解法:

    思路一:

      while(head<end){

          while(a[head]<0)

            head++;

          while(a[end]>0)

            end--;

          exchange(a[head],a[end])

      }

    思路二:

      通过类链表的形式实现,即从头开始判断是否是正数,如果是就往后移动一位,继续判断,如果不是就把其移动到最前面非正数为止。如下:

           第0遍:1,-1,4,9,-3

          -1,1,4,9,-3

          -1,-3,1,4,9

  • 相关阅读:
    shell 字符串替换
    shell 拆分字符串成数组 放入数组
    shell 换行输出变量 换行
    Linux shell修改xml文件
    Spark 实现共同好友
    Hive 开启 service2 服务
    hive 求相互是好友.
    Linux 查看外网ip
    Termux下开启kex远程桌面
    Termux开启ssh服务
  • 原文地址:https://www.cnblogs.com/mapleyuan/p/2961025.html
Copyright © 2011-2022 走看看