本节目录
排序
- 一、冒泡排序
- 二、选择排序
- 三、插入排序
- 四、快速排序
- 五、堆排序
- 六、归并排序
- 七、NB三人组总结
- 八、希尔排序
- 九、计数排序
- 十、桶排序
- 十一、基数排序
查找
- 一、顺序查找
- 二、二分查找
递归
- 汉诺塔问题
贪心算法
- 定义
- 找零问题
- 背包问题
- 拼接最大数字问题
- 活动选择问题
- 贪婪算法的弊端
- 什么问题适用贪婪算法
动态规划
- 斐波那契数列
- 钢条切割问题
- 最长公共子序列
欧几里得算法
RSA加密算法
什么是算法?
"""
时间复杂度:衡量算法执行效率的快慢
a+b+c=1000,且a^2+b^2=c^2(a,b,c为自然数),如何求出所有a,b,c的自然数组合?
a,b,c
总时间=基本运算数量*执行次数
每台机器执行的总时间不同
但是执行基本运算数量大体相同
"""
import time
start_time = time.time()
# for a in range(1001):
# for b in range(1001):
# for c in range(1001):
# if a+b+c==1000 and a**2+b**2==c**2:
# print('a,b,c:',a,b,c) #222秒
"""
T = 1000 * 1000 * 1000 * 2
T = 2000 * 2000 * 2000 * 2
T = N * N * N *2
T(n) = n^3 * 2
T(n) = n^3 * 10
T(n) = n^3 * k
从数学上,T(n) = k*g(n),在现实中,省去细枝末叶,只剩下最显著特征
T(n) = g(n)
g(n) = n^3
"""
#顺序
#条件
#循环
for a in range(1001):
for b in range(1001):
c = 1000-a-b
if a**2+b**2==c**2:
print('a,b,c:',a,b,c) #1秒
end_time = time.time()
print('times:',end_time-start_time)
print('finished')
"""
T(n) = n * n *(1+max(1,0))
= n^2*2
= 〇(n^2)
"""
示例2:列表效率对比
from timeit import Timer """ li1 = [1,2] li2 = [23,5] li = li1 + li2 li = [i for i in range(10000)] li = list(range(10000)) """ def t1(): li = [] for i in range(10000): li.append(i) def t2(): li = [] for i in range(10000): # li = li + [i] #218秒 li += [i] #1.04 def t3(): li = [i for i in range(10000)] def t4(): li = list(range(10000)) def t5(): li = [] for i in range(10000): li.extend([i]) timer1 = Timer("t1()","from __main__ import t1") print('append:',timer1.timeit(1000)) timer2 = Timer("t2()","from __main__ import t2") print('+:',timer2.timeit(1000)) timer3 = Timer("t3()","from __main__ import t3") print('[i for i in range]:',timer3.timeit(1000)) timer4 = Timer("t4()","from __main__ import t4") print('list(range())',timer4.timeit(1000)) timer5 = Timer("t5()","from __main__ import t5") print('extend:',timer5.timeit(1000)) def t6(): li = [] for i in range(10000): li.append(i) def t7(): li = [] for i in range(10000): li.insert(0,i) # timer6 = Timer("t6()","from __main__ import t6") # print('append:',timer6.timeit(1000)) timer7 = Timer("t7()","from __main__ import t7") print('insert:',timer7.timeit(1000)) #16,33s/test/t #查找和替换 """ 数据结构是指数据对象中数据元素之间的关系 程序设计语言基本数据类型:int,float,string,char Python内置数据结构:list,dict,tuple. Python扩展数据结构:栈,队列 """ """ name age hometown [ ('zhangsan',24,'beijing'), ('zhangsan',24,'beijing'), ('zhangsan',24,'beijing'), ] class Stus(object): def adds(self):pass def pop(self):pass def sort(self):pass def modify(self):pass for stu in stus: if stu[0] == 'zhangsan': [ {'name':'zhangsan'}, {'age':23}, {'hometown':'beijjing'}, ] { 'zhangsan':{ 'age':24, 'hometown':'beijing', } } stu['zhangsan'] """