算法复杂度

O(g(n))表示一个函数集合

定义:O(g(n)) = {f(n):存在c>0,算法复杂度>0,使得对所有n算法复杂度算法复杂度有0算法复杂度f(n)算法复杂度c*g(n)}

例:2算法复杂度=O(算法复杂度) (即2算法复杂度算法复杂度O(算法复杂度) ,算法复杂度O(算法复杂度)算法复杂度2算法复杂度

即2算法复杂度是属于O(算法复杂度) 定义的集合的,假设c=2,算法复杂度=10,则0算法复杂度f(n)算法复杂度c算法复杂度g(n)即 0算法复杂度2算法复杂度算法复杂度2*算法复杂度即0算法复杂度算法复杂度算法复杂度算法复杂度,对于所有的n算法复杂度10,算法复杂度都大于算法复杂度,所以2算法复杂度算法复杂度O(算法复杂度)

直观上来看,其实O标记定义的就是一个上界,表示算法最糟糕的情况下主要操作的执行次数也不会超过c*算法复杂度(n为规模,如对n个数进行排序),所以如果某算法在最糟糕情况下的主要操作的执行次数为2算法复杂度,它也依然可以说是时间复杂度为O(算法复杂度)的算法

 

算法复杂度(g(n)) = {f(n):存在c>0,算法复杂度>0,使得对所有n算法复杂度算法复杂度有0算法复杂度c*g(n)算法复杂度f(n)}  

算法复杂度表示的是一个下界)

算法复杂度(g(n)) = {f(n):存在算法复杂度>0,算法复杂度>0,算法复杂度>0,使得对所有n算法复杂度算法复杂度有0算法复杂度算法复杂度*g(n)算法复杂度f(n)算法复杂度算法复杂度*g(n)}

算法复杂度表示的是一个渐进紧确界)

o(g(n)) = {f(n):对任意c>0,存在算法复杂度>0,使得对所有n算法复杂度算法复杂度有0算法复杂度f(n)<c*g(n)}

(o表示的是一个严格的上界)

算法复杂度(g(n)) = {f(n):对任意c>0,存在算法复杂度>0,使得对所有n算法复杂度算法复杂度有0算法复杂度c*g(n)<f(n)}

算法复杂度表示的是一个严格的下界)

 

当n大于某个值到趋于无穷的这个区间中:

f(n)算法复杂度算法复杂度(g(n)): 存在c使得f(n)总小于等于c*g(n)

f(n)算法复杂度算法复杂度(g(n)):存在c使得f(n)总大于等于c*g(n)

f(n)算法复杂度算法复杂度(g(n)):存在算法复杂度算法复杂度使得f(n)总介于算法复杂度*g(n)和算法复杂度*g(n)之间

f(n)算法复杂度o(g(n)):不管c多小f(n)都小于c*g(n)

f(n)算法复杂度算法复杂度(g(n)):不管c多大f(n)都大于c*g(n)

 

算法复杂度f(n)算法复杂度算法复杂度(g(n))算法复杂度f(n)的最高阶项一定和g(n)相同。

f(n)算法复杂度算法复杂度(g(n))算法复杂度f(n)算法复杂度O(g(n))且f(n)算法复杂度算法复杂度(g(n))。

 

算法复杂度对于算法复杂度算法复杂度算法复杂度、不管f(n)是多少项的多项式,只需要看最高次项,增长最快的那项即可

算法复杂度1、log n、n、n*log n、算法复杂度算法复杂度算法复杂度、n! 在前面的增长越慢,后面的增长越快

算法复杂度

算法复杂度

算法复杂度