文章分类 -  Python基础算法

Python-动态规划-钢条切割问题
摘要:查看代码 import time # 代码运行时间装饰器 def cal_time(func): def wrapper(*args, **kwargs): t1 = time.time() result = func(*args, **kwargs) t2 = time.time() print( 阅读全文

posted @ 2023-02-01 14:48 夜黎i 阅读(38) 评论(0) 推荐(0) 编辑

Python-动态规划-最长公共子序列
摘要:查看代码 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 + 阅读全文

posted @ 2023-02-01 14:46 夜黎i 阅读(68) 评论(0) 推荐(0) 编辑

Python-动态规划-斐波那契数列
摘要:# 斐波那契数列: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.最 阅读全文

posted @ 2023-02-01 14:42 夜黎i 阅读(35) 评论(0) 推荐(0) 编辑

Python-基数排序
摘要: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: 阅读全文

posted @ 2023-02-01 14:36 夜黎i 阅读(11) 评论(0) 推荐(0) 编辑

Python-桶排序
摘要: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 阅读全文

posted @ 2023-02-01 14:36 夜黎i 阅读(17) 评论(0) 推荐(0) 编辑

Python-计数排序
摘要: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 阅读全文

posted @ 2023-02-01 14:35 夜黎i 阅读(10) 评论(0) 推荐(0) 编辑

Python-希尔排序
摘要: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] 阅读全文

posted @ 2023-02-01 14:34 夜黎i 阅读(11) 评论(0) 推荐(0) 编辑

python-归并排序
摘要: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 阅读全文

posted @ 2023-02-01 14:33 夜黎i 阅读(18) 评论(0) 推荐(0) 编辑

Python-堆排序_topk问题
摘要:def sift(li, low, high): """ 堆调整 :param li: 列表 :param low: 堆的根节点位置 :param high: 堆的最后一个元素的位置 :return: """ i = low j = 2 * i + 1 tmp = li[low] while j < 阅读全文

posted @ 2023-02-01 14:32 夜黎i 阅读(16) 评论(0) 推荐(0) 编辑

Python-堆排序
摘要:import random def sift(li, low, high): """ 堆调整 :param li: 列表 :param low: 堆的根节点位置 :param high: 堆的最后一个元素的位置 :return: """ i = low # i最开始指向根节点 j = 2 * i + 阅读全文

posted @ 2023-02-01 14:30 夜黎i 阅读(22) 评论(0) 推荐(0) 编辑

Python-快速排序
摘要:import random # import sys # sys.setrecursionlimit() # 修改递归最大深度 def partition(li, left, right): tmp = li[left] while left < right: while left < right 阅读全文

posted @ 2023-02-01 14:28 夜黎i 阅读(13) 评论(0) 推荐(0) 编辑

Python-插入排序
摘要: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 阅读全文

posted @ 2023-02-01 14:27 夜黎i 阅读(17) 评论(0) 推荐(0) 编辑

Python-选择排序
摘要: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 阅读全文

posted @ 2023-02-01 14:27 夜黎i 阅读(7) 评论(0) 推荐(0) 编辑

Python-冒泡排序
摘要: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] 阅读全文

posted @ 2023-02-01 14:25 夜黎i 阅读(9) 评论(0) 推荐(0) 编辑

Python-二分查找
摘要:查看代码 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 阅读全文

posted @ 2023-02-01 14:24 夜黎i 阅读(3) 评论(0) 推荐(0) 编辑

Python-顺序查找
摘要:# 顺序查找又称线性查找 def linear_search(li, val): for ind, v in enumerate(li): if v == val: return ind else: return None 阅读全文

posted @ 2023-02-01 14:18 夜黎i 阅读(14) 评论(0) 推荐(0) 编辑

Python-汉诺塔问题
摘要: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") 阅读全文

posted @ 2023-02-01 14:18 夜黎i 阅读(14) 评论(0) 推荐(0) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示