算法初探——大O表示法】的更多相关文章

#include <stdio.h> #include<malloc.h> int sum2(int n)//时间复杂度为常数,记为大欧-->O(1) { ; sum = (n +)*n / ; return sum; } int sum1(int n)//n-> ∞时,时间复杂度O(n) { ; ; i <= n; i++) sum += i;//n return sum; } /* 算法测试求1到n的和 */ int main(void) { printf()…
一般我们在选择算法时,都是想要选择效率最高的算法.那算法的效率,用什么表示?没错!就是用大O表示法. PS: 大O表示法中,log即为log2,后面不再说明. 下面以简单查找和二分查找,在含有n个元素的有序列表中查找其中一个元素为例,下表总结了我们发现的情况. 使用简单查找时,最多需要猜测次数与列表长度相同,这被称为线性时间,大O表示法为O(n). 二分查找则不同,最多需要猜测次数为logn(n为列表长度),这被称为对数时间(log时间),大O表示法为O(logn). 基本概念 大O表示法指出了…
定义:如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数 T(n)称为这一算法的“时间复杂性”. 当输入量n逐渐加大时,时间复杂性的极限情形称为算法的“渐近时间复杂性”. 我们常用大O表示法表示时间复杂性,注意它是某一个算法的时间复杂性.大O表示只是说有上界,由定义如果f(n)=O(n),那显然成立f(n)=O(n^2),它给你一个上界,但并不是上确界,但人们在表示的时候一般都习惯表示前者. 此外,一个问题本身也有它的复杂性,如果某个算法的复杂性到达了这个问题复…
#!/usr/bin/env python #! _*_ coding:UTF-8 _*_ from Queue import Queue import time que = Queue() time_begin = time.time() # 如果a+b+c=1000, 且a^2+b^2=c^2,a,b,c为自然数,求出a,b,c所有的组合 # 使用枚举法计算结果 for a in range(1001): for b in range(1001): for c in range(1001):…
二分查找 基本概念 二分查找是一种算法,其输入是一个有序的元素列表.如果要查找的元素包含在列表中,二分查找返回其位置:否则返回null. 使用二分查找时,每次都排除一半的数字 对于包含n个元素的列表,用二分查找最多需要log2n步,而简单查找最多需要n步. 示例: 如果列表包含8个数字,你最多需要检查8个数字. 而使用二分查找时,最多需要检查log n个元素.如果列表包含8个元素,你最多需要检查3个元素,因为log 8 = 3( 23 = 8). 注意:仅当列表是有序的时候,二分查找才管用 数组…
什么是算法? 计算机是人的大脑的延伸,它的存在主要是为了帮助我们解决问题. 而算法在计算机领域中就是为了解决问题而指定的一系列简单的指令集合.不同的算法需要不同的资源,例如:执行时间或消耗内存. 如果一个算法执行时间需要好几年或者需要占用非常大的内存,那么这算法几乎毫无用处,即使有价值使用场景也非常有限. 因此,一般上我们讨论一个算法的优劣的时候可以通过时间和空间两个维度来衡量,也就是常说的: 1.时间复杂度: 2.空间复杂度: 我们当然希望执行时间和消耗内存都越少越好,但很多时候其实我们无法同…
二分查找 二分查找又称折半查找,其输入的必须是有序的元素列表.二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止:如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x #python实现二分查找 def binary_search(list,item): low=0 high=len(list)-1 while(low<=high): mid=int((low+hi…
什么是大O表示法 大O表示法可以告诉我们算法的快慢. 大O比较的是操作数,它指出了算法运行时间的增速. O(n) 括号里的是操作数. 举例 画一个16个格子的网格,下面分别列举几种不同的画法,并用大O表示法表示 1.  一次画一个格子.O(n) 2. 折叠纸张,折叠四次就能出现16个格子.O(log n) 大O表示法所表示的是一个算法在最糟糕情况下的运行时间. 一些常见的大O运行时间 O(log n),也叫对数时间,二分查找. O(n),也叫线性时间,简单查找. O(n * log n),快速排…
.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > .katex-html { display: block; } .katex-display > .katex > .katex-html > .tag { position: absolute; right: 0px; } .katex { font: 1.21em/1.2 KaTeX_M…
原文地址:https://my.oschina.net/gooke/blog/684026 一下为本人笔记:) 场景:在解决计算机科学领域的问题时,经常有好多个方法都可以,想找到最优的方法,就有了时间复杂度. 时间复杂度 1.基于时间来衡量算法的效率高低. 2.时间:算法执行一个特定输入规模的函数所需要的时间. 案例!: 编写一个函数,找出数组中的最小值. 方法一:只是简单的遍历数组的每一个元素,然后用变量curMin保持当前的最小值. int CompareSmallestNumber(int…