【算法之常见的时间复杂度】 򛈼

原文: http://blog.gqylpy.com/gqy/341

"补充
空间复杂度:用来评估算法占用内存大小的式子。

什么是算法?

算法(Algorithm):一个计算过程,解决文件的方法

时间复杂度

先总结

  • 时间复杂度是用来评估算法运行时间的一个式子(单位)。
  • 一般来说,时间复杂度高的算法比复杂度低的算法慢。
  • 长安的时间复杂度(按效率排序):
    O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n2logn) < O(n3)
  • 不常见的时间复杂度:
    O(n!) O(2n) O(nn)

对应的复杂度


下面这张图和上面这张一样,其复杂度不变。
不管for循环内执行多少代码,有x层for循环,复杂度就是O(nx)。


"

原文: http://blog.gqylpy.com/gqy/341

原文地址:https://www.cnblogs.com/bbb001/p/11372442.html

时间: 2024-11-18 13:40:19

【算法之常见的时间复杂度】 򛈼的相关文章

算法核心——空间复杂度和时间复杂度超详细解析

算法核心——空间复杂度和时间复杂度超详细解析 一.什么是算法 算法: 一个有限指令集 接受一些输入(有些情况下不需要收入) 产生输出 一定在有限步骤之后终止 每一条指令必须: 有充分明确的目标,不可以有歧义 计算机能处理的范围之内 描述应不依赖于任何一种计算机语言以及具体的实现手段 其实说白了,算法就是一个计算过程解决问题的方法.我们现在已经知道数据结构表示数据是怎么存储的,而“程序=数据结构+算法”,数据结构是静态的,算法是动态的,它们加起来就是程序. 对算法来说有输入,有输出,相当于函数有参

常见的时间复杂度

基础知识的累积罢了. 常见的时间复杂度排序: O(1)时间复杂度最小,常数阶: O(logn)<o(n),显然当n>1时,logn始终在n下方 O(n)<O(nlogn),以底数2为例,当n大于2时,logn始终大于1. O(nlogn)<O(, 由O(logn)<o(n),显然了. O(<O(,显然,n>1时都不需要思考: O<O,后者是翻倍啊,前者做不到啊,想一想10的立方和11的立方的差别. O)<O(n!),想想不只是翻一倍了,而是越翻越多.

常见排序算法及对应的时间复杂度和空间复杂度

转载请注明出处: http://blog.csdn.net/gane_cheng/article/details/52652705 http://www.ganecheng.tech/blog/52652705.html (浏览效果更好) 排序算法经过了很长时间的演变,产生了很多种不同的方法.对于初学者来说,对它们进行整理便于理解记忆显得很重要.每种算法都有它特定的使用场合,很难通用.因此,我们很有必要对所有常见的排序算法进行归纳. 排序大的分类可以分为两种:内排序和外排序.在排序过程中,全部记

转:各种排序算法的稳定性和时间复杂度小结

选择排序.快速排序.希尔排序.堆排序不是稳定的排序算法, 冒泡排序.插入排序.归并排序和基数排序是稳定的排序算法. 冒泡法:  这是最原始,也是众所周知的最慢的算法了.他的名字的由来因为它的工作看来象是冒泡:  复杂度为O(n*n).当数据为正序,将不会有交换.复杂度为O(0). 直接插入排序:O(n*n) 选择排序:O(n*n) 快速排序:平均时间复杂度log2(n)*n,所有内部排序方法中最高好的,大多数情况下总是最好的. 归并排序:log2(n)*n 堆排序:log2(n)*n 希尔排序:

各种排序算法的稳定性和时间复杂度小结

选择排序.快速排序.希尔排序.堆排序不是稳定的排序算法, 冒泡排序.插入排序.归并排序和基数排序是稳定的排序算法. 冒泡法:  这是最原始,也是众所周知的最慢的算法了.他的名字的由来因为它的工作看来象是冒泡:  复杂度为O(n*n).当数据为正序,将不会有交换.复杂度为O(0). 直接插入排序:O(n*n) 选择排序:O(n*n) 快速排序:平均时间复杂度log2(n)*n,所有内部排序方法中最高好的,大多数情况下总是最好的. 归并排序:log2(n)*n 堆排序:log2(n)*n 希尔排序:

八大排序算法JAVA实现(时间复杂度O(n*logn)篇)

本文讲述时间复杂度为n*logn的排序算法:归并排序.快速排序.堆排序以及希尔排序的原理.Java实现以及变形应用. 一.归并排序 原理:把两个有序数列合并为一个有序数列.需递归实现. Java实现: 1 public int[] mergeSort(int[] a, int n) 2 { 3 return doMergeSort(a, n, 0, n - 1); 4 } 5 public int[] doMergeSort(int[] a, int n, int start, int end)

[CLPR] 定位算法中常见的几种思路

一. 引言 如何从一副图片中找到车牌? 这是机器视觉的一个应用. 理所当然地, 思考的角度是从车牌本身的信息入手, 为了讨论方便, 下面均以长窄型蓝白车牌为例. 下图就是这样一张车牌的基本信息. 一眼看过去, 可以得到的信息有: 长宽比 - 3.14, 字符数 - 7, 第一个字符是汉字, 第二个字符是字母, 之后为5个字母/数字混合等距排列. 同时还可以大致了解到, 一个清晰的车牌应该拥有足够多的边缘信息, 换句话说, 边缘信息足够密集地聚集在一个3.14:1的矩形中. 所以今天介绍的算法,

C语言相关及算法题常见错误总结

之前写程序总结的一些东西,比较私人化,记录在这.后面继续补充. 1.不要再太过纠结于输入了.比如怎样想结束就结束,或用字符a来匹配int形来结束.搞来搞去好复杂.可以很简单地用输入数量限制. 2.命名时如果有114 abc和114 abcd,可能编译114 abcd后运行的是114 abc.因为空格. 3.数组千万不要开小了.特别是在读取文件时,而你又不知道长度最大为多少,不要想当然地,很容易把数组开小了..错误难查.. 4.读文件时,fscanf太容易出错了,还是用getc比较好,特别是需要一

【最长回文子串】Manache算法,O(N)时间复杂度

问题描述: 找一个字符串里的最长回文子串 暴力法:定中心,从0长度向两端扩展的方法O(n^2), n >= 10^5还是超时,故只能<O(n^2) Manacher's 算法:定中心,从p[r],(已能确定以该点为中心两端是回文的长度开始), 向两端扩展,时间复杂度, O(n) 算法如下: 示意图: 定义: cen:当前中心点 p[i]: 以i为中心两端满足回文的长度 r:从0到len-1遍历 l:r关于cen的对称点 绿色:表示已经确定满足回文的部分 步骤: 0. r 遍历 判断是否小于ce