zoukankan      html  css  js  c++  java
  • 算法入门基础

    排序分类:

    • 内部排序:把数据加载到内存中进行排序,适用于数据量小的情况。

    • 外部排序:借助外部的文件等,数据量大,无法加载到内存。

    • 常见分类如图:

    算法复杂度

    算法复杂度分为时间复杂度和空间复杂度。其作用: 时间复杂度时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。算法的复杂性体运行该算法时的计算机所需资源的多少上,计算机资源最重要的是时间和空间,即寄存器资源,因此复杂度分为时间和空间复杂度。

    空间复杂度:

    描述一个算法所需要的空间大小,即占用的内部内存,或者外部的内存大小,目前的设备性能各方面发展较快,空间复杂度已经不是影响程序性能的主要因素。

    时间复杂度:

    • 概述:

      时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。

    • 时间频度

      一个语句执行次数称为语句频度或时间频度,记为T(n)。算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。

    • 时间复杂度:

      一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f (n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度

      举个栗子:

      int sum = 0;
      int b = 100;
      for(int i = 0; i<= b;i++){
          sum += i;
      }
      //  T(n) = n+1 = 100+1 
      
      sum = (1+b)*b/2 //同样也可以计算出结果,但是T(n) = 1
      

      简而言之,在T(n)=O(f(n))中,当n趋近无穷大时,有 T(n)/f(n) = c ,极限值c是一个不为0 的常数,就叫 f(n) 是T(n)的同量级函数,若求得 f(n) = n ,则O(f(n)) =O(n) .

    • 各时间复杂度增长曲线:

    • 各算法时间复杂度:

  • 相关阅读:
    python开发线程:死锁和递归锁&信号量&定时器&线程queue&事件evevt
    python开发线程:线程&守护线程&全局解释器锁
    python开发进程:共享数据&进程池
    python开发进程:互斥锁(同步锁)&进程其他属性&进程间通信(queue)&生产者消费者模型
    学习笔记之Model selection and evaluation
    学习笔记之scikit-learn
    近期学习小结
    学习笔记之Problem Solving with Algorithms and Data Structures using Python
    Leetcode 3. Longest Substring Without Repeating Characters
    学习笔记之C / C++
  • 原文地址:https://www.cnblogs.com/coding-996/p/12267857.html
Copyright © 2011-2022 走看看