算法时间复杂度

Posted by Solace Blog on March 28, 2019

时间复杂度

数据结构(Data Structure)

  • 链表

    插入数据快,只需改变前后的指针

  • 数组

    查找数据比较快,根据单元格的大小和第几个数据只根据计算的偏移量就能找到相应的数据

如何测算算法的优劣

  • 时间测算:完成算法所花费的时间

    方法就是在算法前后记录下开始和结束时间,然后计算下时间差,就能计算出花费的时间。

    如果个别算法时间很短,那么可以使用循环来算多次,最终来除以循环次数计算算法花费的时间。

  • 空间测算:完成算法所花费的空间

Big O

  • 时间复杂度:随着问题规模的扩大,时间变化的规律
    • 访问数组某个位置的值

      当数组长度为10时,比如访问最后一个元素的数据,计算下偏移量,可能花费1ms。

      当数组长度为10w时,访问最后一个元素,也是计算偏移量,基本也是花费1ms。

      我们称这个问题的时间复杂度是O(1)

    • 访问链表的某个位置的值

      针对不同长度的链表,访问最后一个元素花费的时间会越来越多,针对链表它的时间复杂度就是O(n)

    • 求数组的平均数

      O(n)