python复杂度
① python关于时间复杂度的问题(小白提问)
时间复杂度是不变的,O(n2)
② python中sorted函数的空间复杂度是多少
sorted(iterable,cmp,key,reverse)
参数:iterable可以是list或者iterator;
cmp是带两个参数的比较函数;
key
是带一个参数的函数;
reverse为False或者True;
举例说明
(1)用cmp函数排序
>>>
list1
=
[('david',
90),
('mary',90),
('sara',80),('lily',95)]
>>>
sorted(list1,cmp
=
lambda
x,y:
cmp(x[0],y[0]))
[('david',
90),
('lily',
95),
('mary',
90),
('sara',
80)]
>>>
sorted(list1,cmp
=
lambda
x,y:
cmp(x[1],y[1]))
[('sara',
80),
('david',
90),
('mary',
90),
('lily',
95)]
(2)用key函数排序
>>>
list1
=
[('david',
90),
('mary',90),
('sara',80),('lily',95)]
>>>
sorted(list1,key
=
lambda
list1:
list1[0])
[('david',
90),
('lily',
95),
('mary',
90),
('sara',
80)]
>>>
sorted(list1,key
=
lambda
list1:
list1[1])
[('sara',
80),
('david',
90),
('mary',
90),
('lily',
95)]
(3)用reverse排序
>>>
sorted(list1,reverse
=
True)
[('sara',
80),
('mary',
90),
('lily',
95),
('david',
90)]
(4)用operator.itemgetter函数排序
>>>
from
operator
import
itemgetter
>>>
sorted(list1,
key=itemgetter(1))
[('sara',
80),
('david',
90),
('mary',
90),
('lily',
95)]
>>>
sorted(list1,
key=itemgetter(0))
[('david',
90),
('lily',
95),
('mary',
90),
('sara',
80)]
介绍operator.itemgetter函数
>>>
import
operator
>>>
a
=
[1,2,3]
>>>
b
=
operator.itemgetter(0)
>>>
b(a)
1
operator.itemgetter函数获取的不是值,而是定义了一个函数。
(5)多级排序
>>>
sorted(list1,
key=itemgetter(0,1))
[('david',
90),
('lily',
95),
('mary',
90),
('sara',
80)]
空间复杂度是O(n)
③ python 判读是不是等差数列,要求算法时间复杂度为o
首先计算机的输入数据只能是有限的,理论上的无穷项等差数列不可能输入,只能以数组形式输入有限项等差数列。
算法原理:设输入的数组为A[n],只要用d=A[1]-A[0];求出公差。然后逐项检查所有数组相邻差值是否为d即可。所以最佳时间复杂度为O(n)。
如果需要写这么个简单程序请追问。
④ python编程中,选择排序算法是一个时间复杂度为什么的算法
选择排序,依次从n,n-1,n-2,.....2 个数中取出最小值 放入位置0,1,2,3....,n-1
时间复杂度为n+n-1+...+1=n(n+1)/2 即O(n^2)
⑤ 求计算算法的复杂度 (Python写的逻辑)
(a) 算法复杂度为O(n),因为只有一个while循环,且i<n,所以复杂度是线性级,仅跟n有关
(b) 算法复杂度为O(n²),实际上算法复杂度为nxn/2 = n²/2,因为有for循环的嵌套
(c) 算法复杂度为O(n),因为只有while循环,尽管里面i=ix2,但是这是常数级操作
(d) 算法复杂度为O(log i),这是对数级操作,每次i除以2,所以是log(i)base(2)
(e) 算法复杂度为O(n log n)
(f) 算法复杂度为O(2^i),这是一个递归算法,为指数级
(g) 算法复杂度为O(n 2^n),这是一个交换数据的算法,是一个递归+一个for 循环
⑥ Python与c语言有哪些区别
一、言语类型Python是一种基于解说器的言语,解说器会逐行读取代码;首先将Python编译为字节码,然后由大型C程序解说;C是一种编译言语,完好的源代码将直接编译为机器代码,由CPU直接履行。
二、内存办理Python运用主动废物收集器进行内存办理;在C言语中,程序员有必要自己进行内存办理。
三、运用Python是一种通用编程言语,一个多范式。它首要支持面向目标编程,程序编程,函数编程。C是结构化编程言语。答应运用函数,挑选(if / else等),迭代(循环)。它首要用于硬件相关的运用程序。
四、速度Python编程言语因为前史原因,有一个GIL锁,导致其对多线程支持不够好,运转速度较慢;而C言语很快,C言语是比较底层的言语,运转效率上要优于Python。
五、复杂度不一样在Python中不需要声明变量类型。而在C中有必要声明变量类型。Python程序更易于学习,编写和阅读。而C程序语法比Python更难。Python中的测验和调试更容易;而在C中测验和调试更难。Python相对其他言语而言是非常简单的言语,高度集成,代码量少。C是静态言语在变量在运用前进行声明,而Python是动态言语在运用的时候可以直接运用不需要声明,C里面没有目标而Python里面是有目标。C言语在运转的时候是需要编译然后运转,而Python是直接run的。
⑦ python常用内置数据结构的时间复杂度都是多少
python内置方法的时间复杂度,参考链接如下:
http://www.orangecube.net/python-time-complexity
⑧ python 时间复杂度
Hey de! 判断时间复杂度跟核心语句的执行频次有密切关系,执行频次越多时间复杂度越高。第三个循环的核心语句是:
x = x*2
假设我们设它的执行频次为f(n),根据题意我们能够得到这种规律,执行1次x=2,2次x=4,所以该核心语句的执行次数f(n)应该满足: 2^{f(n)} < n, 得出f(n)< log_{2}(n),更多关于时间复杂度的知识可参考这篇博文:
http://blog.csdn.net/zolalad/article/details/11848739?readlog
⑨ 使用python内建函数,如何分析复杂度
字典(dict)下列字典的平均情况基于以下假设: 1. 对象的散列函数足够撸棒(robust),不会发生冲突。 2. 字典的键是从所有可能的键的集合中随机选择的。小窍门:只使用字符串作为字典的键。这么做虽然不会影响算法的时间复杂度,但会对常数项产生显着的影响,这决定了你的一段程序能多快跑完。操作平均情况最坏情况复制[注2]O(n)O(n)取元素O(1)O(n)更改元素[注1]O(1)O(n)删除元素O(1)O(n)遍历[注2]O(n)O(n) 注: [1] = These operations rely on the “Amortized” part of “Amortized Worst Case”. Indivial actions may take surprisingly long, depending on the history of the container. [2] = For these operations, the worst case n is the maximum size the container ever achieved, rather than just the current size. For example, if N objects are added to a dictionary, then N-1 are deleted, the dictionary will still be sized for N objects (at least) until another insertion is made.
⑩ c语言和python有什么较大的区别
c语言和python的区别是:
1、Python是一种面向对象的解释型语言,通过缩进来表示语句体,在Python中每一条语句结尾后没有分号;
2、C是一种面向过程的编译型语言,通过“{}”来表示语句体,C语言中每一条语句需以英文分号结尾。
Python和C语言都是一种高级编程语言,它们之间有相似之处,也有不少差异。下面本篇文章就来给大家介绍一下c语言和python之间有哪些的区别,希望对大家有所帮助。
5、应用Python是一种通用编程语言,一个多范式。它主要支持面向对象编程,程序编程,函数编程。
C是结构化编程语言。允许使用函数,选择(if / else等),迭代(循环)。它最主要的用途就是系统底层的应用,例:硬件相关的应用程序。