算法基础
Govenny
在读
展开
-
通过Scanner输入列表生成二叉树,递归简写
递归比较简洁,用作快速生成二叉树复用算法练习原创 2023-08-13 15:24:33 · 68 阅读 · 0 评论 -
查找
顺序查找从列表第一个元素开始, 按顺序搜索, 直到找到元素或搜索到最后一个元素为止.def linear_search(lists, goal): """ 输入列表,和目标元素, 进行顺序/线性查找 """ for i in lists: if i == goal: return i elif i != goal: continue return None二分查找通过反复对目标元原创 2021-04-22 18:11:17 · 114 阅读 · 0 评论 -
冒泡/选择/插入排序简析
排序冒泡排序列表每两个相邻的数, 如果前面比后面大则交换两个数.每遍历一遍, 无序区内最大的数放入了有序区. 无序区数量-1, 有序区数量+1优化: 每趟的区域数量只改变1, 假如中途恰好全部排序, 就仍然必须走完剩余趟数. 因此设置flag, 如果发生空趟则立刻终止.def bubble_sort(lists): tik = len(lists) - 1 # 无序区最后一位索引 while tik > 0: temp = 0 # 移动指针原创 2021-04-20 16:11:01 · 101 阅读 · 0 评论 -
顺序查找与二分查找简析
顺序查找从列表第一个元素开始, 按顺序搜索, 直到找到元素或搜索到最后一个元素为止.def linear_search(lists, goal): """ 输入列表,和目标元素, 进行顺序/线性查找 """ for i in lists: if i == goal: return i elif i != goal: continue return None二分查找通过反复对目标元原创 2021-04-20 16:10:23 · 202 阅读 · 2 评论 -
汉诺塔问题及时间复杂度推导
汉诺塔问题:我们设计其圆环从A移动到B:从小到大分解:n=1时, (A–>B). 一步n=2时, [A–>C], (A–>B), [C–>B]. 三步n=3时, [A–>B, A–>C, B–>C], (A–>B), [C–>A, C–>B, A–>B].七步…n=k时, [将前k-1个A移动到C], (第k个移动到B), [将k-1个C移动到B]这里我将最大的圆盘从(A–>B)括起来, 以此为原点将步骤分为了左右两个原创 2021-04-19 17:01:40 · 3838 阅读 · 0 评论