算法
算法就是输入后的成按照你的规定去执行
一.时间复杂度
估计计算运算之间的一个式子,一般来说时间复杂度较高的算法比复杂度低的慢
常见的时间复杂度
不常见的时间复杂度
如何一眼判断时间复杂度
是以一个O(1)作为最基础的单位分别有O(n平方)
二.空间复杂度
用来评估算法内存占用大小的一个式子
三.递归
递归的特点
1.调用自身
2.结束条件
四.查找算法
1.列表查找
in
index
2.二分查找 (限制就是只能是有序列表)
hight >low 有值
hight =low 就一个值
hight <low 没有值
3.递归 二分查找
五.排序
1.冒泡排序
第一种
def bubble_sort(alist): for j in range(len(alist)-1,0,-1): # j表示每次遍历需要比较的次数,是逐渐减小的 for i in range(j): if alist[i] > alist[i+1]: alist[i], alist[i+1] = alist[i+1], alist[i] li = [54,26,93,17,77,31,44,55,20] bubble_sort(li) print(li)
2.选择排序
lt = [3, 5, 2, 1, 8, 4] #求出lt的长度 n = len(lt) #外层循环确定比较的轮数,x是下标,lt[x]在外层循环中代表lt中所有元素 for x in range(n-1): #内层循环开始比较 for y in range(x+1,n): #lt[x]在for y 循环中是代表特定的元素,lt [y]代表任意一个lt任意一个元素。 if lt[x]>lt[y]: #让lt[x]和lt列表中每一个元素比较,找出小的 lt[x],lt[y]=lt[y],lt[x] print(lt)
选择排序法和冒泡排序法的区别:
- (1)冒泡排序是比较相邻位置的两个数,而选择排序是按顺序比较,找最大值或者最小值;
- (2)冒泡排序每一轮比较后,位置不对都需要换位置,选择排序每一轮比较都只需要换一次位置;
- (3)冒泡排序是通过数去找位置,选择排序是给定位置去找数;
- (4) 冒泡排序相对稳定
3.插入排序
四.快速查询
五.堆排序
六.归并排序