数据结构算法视频:https://www.bilibili.com/video/BV17J411i7zS?p=45
1、冒泡排序

1 def bubble_sort(li): 2 n = len(li) 3 # 遍历列表长度减1次 4 for i in range(1, n): 5 # 创建一个变量,用来记录本轮冒泡,是否有数据交换位置 6 status = False 7 # 每次遍历都获取第一个元素,依次和后面的元素进行比较 8 for j in range(n - i): 9 # 判断前元素,和后一个元素的值 10 if li[j] > li[j + 1]: 11 # 交换当前元素和后一个元素的值 12 li[j], li[j + 1] = li[j + 1], li[j] 13 # 只要由数据交换位置,则修改statusd的值 14 status = True 15 # 每一轮冒泡结束之后,判断当前status是否为Flase, 16 # 如果为Flase,则说明上一轮冒泡没有修改任何数据的顺序(即数据是有序的) 17 if not status: 18 return li 19 return li
时间复杂度:O(n²)
2、斐波那契
①输出第十个

1 def fib(n): 2 a, b = 1, 1 3 for i in range(n-2): 4 a, b = b, a+b 5 return b 6 7 # 输出了第10个斐波那契数列 8 print(fib(10))
②输出前十个

1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 # 斐波那契数列 4 5 def fib(n): 6 if n == 1: 7 return [1] 8 if n == 2: 9 return [1, 1] 10 fibs = [1, 1] 11 for i in range(n-2): 12 fibs.append(fibs[-1] + fibs[-2]) 13 return fibs 14 15 # 输出前10个斐波那契数列 16 print(fib(10))
3. 快速排序
https://www.bilibili.com/video/BV17J411i7zS?p=45
4. 二分法排序

1 def func(alist, item): 2 n = len(alist) 3 first = 0 4 last = n - 1 5 while first <= last: 6 mid = (first + last) // 2 7 if alist[mid] == item: 8 return True 9 elif item < alist[mid]: 10 last = mid - 1 11 else: 12 first = mid + 1 13 return False