随笔分类 - 数据结构与算法
摘要:原理 把序列递归拆分到极致,然后得出多个有序的小序列,再递归将多个顺序序列合并成一个顺序序列。 代码 import random # 归并函数 # 两段已经有序了的数据 def merge(lst, low, mid, high): # 左边一段开始 i = low # 右边一段开始 j = mid
阅读全文
摘要:步骤 建堆 挨个出数 代码 # 调整函数 def shift(lst, low, high): i = low j = 2 * i + 1 # 出来到数 tmp = lst[low] # 只要有数 while j <= high: # 如果右边孩子存在并且比较大 if j + 1 <= high a
阅读全文
摘要:原理 取一个元素,使其归位(归位函数),归位后分为左边,右边,并且得到归位元素的位置 归位元素位置的左右两边列表分别执行递归操作 代码 def partion(lst, left, right): tmp = lst[left] while left < right: # 比较右边 while ls
阅读全文
摘要:原理 从列表第二位开始,获取一个数,和第一位比较,是否交换位置 获取新的数,和前面排好序的数据比较(从右往左比较)放在合适的位置 代码 import random def insert_sort(lst = None): # 第一个数是有序的,所以从第二个数开始遍历 for i in range(1
阅读全文
摘要:原理 从列表中找出最小的数,和第一个数交换位置 再从列表找第二小的数,和第二个位置交换,依此类推... 代码 import random def select_sort(lst): for i in range(len(lst)): # 初始化最小值的位置 min_loc = i for j in
阅读全文
摘要:#### 原理 >1. 比较相邻的两个数,如果前面的数比后面大,则交换两个数的位置,最后得到最大的数排在最后一位,这样最后一位就有序了。 >2. 剩下的数再次比较,得到第二大的数排在倒数第二位,依次类推。 #### 代码 ``` import random def bubble_sort(lst =
阅读全文
摘要:#### 原理 >相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号a、b、c),在A杆自下而上、由大到小按顺序放置n个金盘(如图)。 >游戏的目标:把A杆上的金盘全部移到c杆上,并仍保持原有顺序叠好。 >操作规则:每次只能移动一个盘子,并且在移动过
阅读全文
摘要:#### 原理 第三个数等于前面两个数之和 F(0) = 0, F(1) = 1, F(N) = F(N-1) + F(N-2) 如: 0, 1, 1, 2, 3, 5, 8, 13 #### 代码 ```python def fib(n): c, a, b = 0, 0, 1 while c 输出
阅读全文