算法的時間複雜度是指算法須要消耗的時間資源
時間複雜度用「O(數量級)」來表示
常見的時間複雜度有:
O(1)常數階; 問題規模越大效率越高,時間不變, a = [1,2,3] a[0]=1,a增長無影響python
O(log2n)對數階:問題規模越大效率越高,時間增長慢,算法
O(n):線性階,時間隨數據規模增長,線性增長,時間增長正常 , 例子:for i in range(n)vim
O(n2):平方階,時間隨數據規模增長,指數增長,時間增長快 ,for i in range(n): for j in range(i):........app
n表明問題規模
算法中花費的時間與算法中語句的執行次數成正比ide
一個程序的空間複雜度是指:運行完一個程序所須要內存的大小code
數據交換
三個數排序
a=11, b=9, c=8 臨時變量tblog
[root@133 ~]# vim change.py #!/usr/bin/python def swap(a,b,c): if a > b: t = a a = b b = t if a > c: t = a a = c c = t if b > c: t = b b = c c = t print a,b,c
if name == 'main':
swap(11,9,8)排序
例子2:list A所有爲0,修改部分列表元素爲1,手動輸入5個元素,打印出元素爲0的元素位置內存
[root@133 ~]# vim key.py #!/usr/bin/python #encoding:utf8 def key(): a = [] for i in range(10): a.append(0) #a=[0,0,0,0,0,0,0,0,0,0] for i in range(5): input = int(raw_input("Please input a num:")) #手動輸入須要修改成1的列表元素 a[input] = 1 # a[4]=1 for i in range(len(a)): if a[i] == 0: print i if __name__ == '__main__': key() ~ [root@133 ~]# python key.py Please input a num:1 Please input a num:2 Please input a num:3 Please input a num:4 Please input a num:5 0 6 7 8 9