![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法图解
jxwsina1
这个作者很懒,什么都没留下…
展开
-
1.二分查找
def binary_search(list, item): # low和high用于跟踪要在期中查找的列表部分 low = 0 high = len(list) - 1 # 只要范围没有缩小到只包含一个元素 while low <= high: # 就检查中间的元素 mid = (low + high) // 2...转载 2019-05-15 17:23:12 · 105 阅读 · 0 评论 -
Python数据结构——链表
# 链接表基础结构# item用于存储数据# next指向下一个数据class Node(): # 用tuple定义允许绑定的属性名称 __slots__=['_item','_next'] def __init__(self,item): self._item=item self._next=None def getItem(...转载 2019-05-16 17:45:24 · 152 阅读 · 0 评论 -
Python数据结构——队列
# 队列(queue)也是表,使用队列时插入和删除在不同的端进行。# 队列的基本操作是Enqueue(入队),在表的末端(rear)插入一个元素,还有出列(Dequeue),删除表开头的元素。class Queue(object): # 使用list来实现 def __init__(self): self.queue = [] def...转载 2019-05-16 17:43:06 · 220 阅读 · 0 评论 -
Python数据结构——栈
# 栈(Stack)是限制插入和删除操作只能在一个位置进行的表,该位置是表的末端,称为栈的顶(top)。栈的基本操作有PUSH(入栈)和POP(出栈)。# 栈又被称为LIFO(后入先出)表。# 栈可以通过list来实现class Stack(object): # 初始化 def __init__(self): self.stack = [] # 是否...转载 2019-05-16 17:41:28 · 153 阅读 · 0 评论 -
11.最长公共子序列
import numpy def find_lcseque(s1, s2): # 生成字符串长度加1的0矩阵,m用来保存对应位置匹配的结果 m = [ [ 0 for x in range(len(s2)+1) ] for y in range(len(s1)+1) ] # d用来记录转移方向 d = [ [ None for x in ...转载 2019-05-16 17:38:44 · 221 阅读 · 0 评论 -
10.最长公共子串
def find_lcsubstr(s1, s2): # 生成0矩阵,为方便后续计算,比字符串长度多了一列 m = [[0 for i in range(len(s2)+1)] for j in range(len(s1)+1)] # 最长匹配的长度 mmax = 0 # 最长匹配对应在s1中的最后一位 p = 0 for i i...转载 2019-05-15 18:04:12 · 205 阅读 · 0 评论 -
9.背包问题
def bag(n, c, w, v):# """# 测试数据:# n = 6 物品的数量,# c = 10 书包能承受的重量,# w = [2, 2, 3, 1, 5, 2] 每个物品的重量,# v = [2, 3, 1, 5, 4, 3] 每个物品的价值# """ # 置零,表示初始状态,多建了一行的空行 value = ...转载 2019-05-15 18:02:36 · 194 阅读 · 0 评论 -
8.贪婪算法
# 最少的电台数,覆盖最多的州# 需要覆盖的州的集合states_needed = set(["mt", "wa", "or", "id", "nv", "ut", "ca", "az"])# 各电台覆盖的州的集合stations = {}stations["kone"] = set(["id", "nv", "ut"])stations["ktwo"] = set(["wa", "...转载 2019-05-15 18:00:55 · 126 阅读 · 0 评论 -
7.狄克斯特拉算法
# the graphgraph = {}graph["start"] = {}graph["start"]["a"] = 6graph["start"]["b"] = 2graph["a"] = {}graph["a"]["fin"] = 1graph["b"] = {}graph["b"]["a"] = 3graph["b"]["fin"] = 5graph["fin...转载 2019-05-15 17:59:51 · 224 阅读 · 0 评论 -
6.广度优先搜索
from collections import deque# 名字最后一个为m字母的为芒果销售商def person_is_seller(name): return name[-1] == 'm'graph = {}graph["you"] = ["alice", "bob", "claire"]graph["bob"] = ["anuj", "peggy"]graph...转载 2019-05-15 17:58:29 · 120 阅读 · 0 评论 -
5.快速排序
def quicksort(array): if len(array) < 2: # 基线条件:为空或只包含一个元素的数组是“有序”的 return array else: # 递归条件 pivot = array[0] # 由所有小于等于基准值的元素组成的子数组 ...转载 2019-05-15 17:56:43 · 83 阅读 · 0 评论 -
4.栈
def fact(x): if x == 1: return 1 else: return x * fact(x-1)print(fact(5))转载 2019-05-15 17:55:16 · 120 阅读 · 0 评论 -
3.递归
def countdown(i): # base case if i <= 0: return 0 # recursive case else: print(i) return countdown(i-1)countdown(5)转载 2019-05-15 17:52:50 · 148 阅读 · 0 评论 -
2.选择排序
def findSmallest(arr): # 存储最小的值 smallest = arr[0] # 存储最小值的索引 smallest_index = 0 for i in range(1, len(arr)): if arr[i] < smallest: smallest_index = i ...转载 2019-05-15 17:47:17 · 114 阅读 · 0 评论 -
Python数据结构——二维数组
# 创建二维数组# 必须要用for i in range(2),不然就会变成浅复制num_list = [ [0] * 5 for i in range(2)]num_list# 数组赋值num_list[0][0] = 1num_list转载 2019-05-16 17:47:04 · 757 阅读 · 0 评论