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等),迭代(循環)。它最主要的用途就是系統底層的應用,例:硬體相關的應用程序。