摘要:查看代码 import time # 代码运行时间装饰器 def cal_time(func): def wrapper(*args, **kwargs): t1 = time.time() result = func(*args, **kwargs) t2 = time.time() print(
阅读全文
摘要:查看代码 def lcs_length(x, y): m = len(x) n = len(y) c = [[0 for _ in range(n + 1)] for _ in range(m + 1)] for i in range(1, m + 1): for j in range(1, n +
阅读全文
摘要:# 斐波那契数列:Fn = Fn-1 + Fn-2 def fibnacci(n): # 子问题的重复计算 if n == 1 or n == 2: return 1 else: return fibnacci(n - 1) + fibnacci(n - 2) # 动态规划(DP)的思想 # 1.最
阅读全文
摘要:def radix_sort(li): max_num = max(li) # 最大值 9->1, 99->2, 999->3以此类推 it = 0 while 10 ** it <= max_num: buckets = [[] for _ in range(10)] for var in li:
阅读全文
摘要:def bucket_sort(li, n=100, max_num=10000): buckets = [[] for _ in range(n)] # 创建桶 for var in li: i = min(var // (max_num // n), n - 1) # i表示var放到几号桶 b
阅读全文
摘要:def count_sort(li, max_count=100): """ :param li: 列表 :param max_count: 列表中最大的数 :return: """ count = [0 for _ in range(max_count+1)] for val in li: cou
阅读全文
摘要:def insert_sort(li, gap): for i in range(gap, len(li)): # i 表示摸到的牌的下标 tmp = li[i] j = i - gap # j 指的是手里的牌的下标 while j >= 0 and li[j] > tmp: li[j + gap]
阅读全文
摘要:def merge(li, low, mid, high): # 需要mid左右两边的列表是有序的 i = low j = mid + 1 ltmp = [] while i <= mid and j <= high: # 左右两边都要有数 if li[i] < li[j]: ltmp.append
阅读全文
摘要:def sift(li, low, high): """ 堆调整 :param li: 列表 :param low: 堆的根节点位置 :param high: 堆的最后一个元素的位置 :return: """ i = low j = 2 * i + 1 tmp = li[low] while j <
阅读全文
摘要:import random def sift(li, low, high): """ 堆调整 :param li: 列表 :param low: 堆的根节点位置 :param high: 堆的最后一个元素的位置 :return: """ i = low # i最开始指向根节点 j = 2 * i +
阅读全文
摘要:import random # import sys # sys.setrecursionlimit() # 修改递归最大深度 def partition(li, left, right): tmp = li[left] while left < right: while left < right
阅读全文
摘要:import random def insert_sort(li): for i in range(1, len(li)): # i 表示摸到的牌的下标 tmp = li[i] j = i - 1 # j 指的是手里的牌的下标 while j >= 0 and li[j] > tmp: li[j+1
阅读全文
摘要:import random def select_sort_simple(li): li_new = [] for i in range(len(li)): min_val = min(li) li_new.append(min_val) li.remove(min_val) return li_n
阅读全文
摘要:def bubble_sort(li): for i in range(len(li) - 1): # 第i趟 exchange = False for j in range(len(li) - i - 1): if li[j] > li[j+1]: li[j], li[j+1] = li[j+1]
阅读全文
摘要:查看代码 def binary_search(li, val): left = 0 right = len(li) - 1 while left <= right: # 候选区有值 mid = (left + right) // 2 if li[mid] == val: return mid eli
阅读全文
摘要:# 顺序查找又称线性查找 def linear_search(li, val): for ind, v in enumerate(li): if v == val: return ind else: return None
阅读全文
摘要:def hanoi(n, a, b, c): if n > 0: hanoi(n - 1, a, c, b) print("盘子从%s 移到 %s 了" % (a, c)) hanoi(n - 1, b, a, c) hanoi(3, "A", "B", "c")
阅读全文