算法入门基础

排序分类:

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

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

  • 常见分类如图:

算法复杂度

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

空间复杂度:

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

时间复杂度:

  • 概述:

    时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大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) .

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

  • 各算法时间复杂度:

posted @ 2020-02-06 10:40  沐雨橙风~~  阅读(2779)  评论(13编辑  收藏  举报