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

  • 相关阅读:
    MongoDB查询
    MongoDB增删改查
    redis复制
    HTTP请求方法与状态码
    Solr工作原理
    idea多行同一列同时编辑;多光标处同时编辑方法
    SVN merge 三种方式
    vue中msgbox的使用;如何在msgbox中新增一个输入框组件传值给后台
    切换或重新输入svn用户名密码或通过tortoisesvn查看svn密码
    MyBatis中#{}和${}的区别
  • 原文地址:https://www.cnblogs.com/mapleyuan/p/2961025.html
Copyright © 2011-2022 走看看