python数据结构
innerVoi
一只啥也不会的CS菜鸟,致力于探索和分享有趣的研究...目前关注:数据选择和异常检测(欢迎相关领域的研究者一起交流讨论/开展合作)
展开
-
给定一个整数数组,求使用数组中的数加和得到目标值的所有方案数——python动态规划实现
目录题目描述python实现题目描述第一行输入一个整数N代表物品数量,第二行输入N个正整数代表每个物品的价值。每个物品不可分割,不能以部分价值分配。问:若要把这些物品等价值的分配给两个人,分配方案的数量是多少?若无法达到分配要求,则输出’No solution!‘(样例如下)input:51 2 2 3 4output:4python实现from functools import reducedef fangan(li): num = reduce(lambda原创 2021-09-23 17:52:09 · 1001 阅读 · 1 评论 -
归并排序——python数据结构
归并排序pthon实现def merge(li, low, mid, high): i = low j = mid + 1 temp = [] while i <= mid and j <= high: if li[i] < li[j]: temp.append(li[i]) i += 1 else: temp.append(li[j])原创 2021-07-01 23:32:09 · 116 阅读 · 0 评论 -
堆排序——python数据结构
目录堆的基本知识堆排序(以大根堆为例)堆的基本知识堆:一种特殊的完全二叉树结构完全二叉树:仅最后一层或次最后层有叶节点,且叶节点从左向右顺序排列大根堆:任一节点都比其孩子节点大小根堆:任一节点都比其孩子节点小堆的向下调整当根节点的左右子树都是堆而其本身不是堆时,通过一次向下调整来将其变换成一个堆堆排序(以大根堆为例)从最后一个有孩子的结点开始,依次调整,构造初始堆得到初始堆的堆顶元素为最大元素去掉堆顶,将堆的最后一个元素放到堆顶。通过一次向下调整重新构建堆得到堆原创 2021-06-30 17:05:38 · 88 阅读 · 0 评论 -
快速排序——python数据结构
快速排序取列表的一个元素值作为flag,将数组划分为两个部分。flag左边的值都比它小,右边的值都比它大。递归完成。平均时间复杂度:O(n log(n))最坏时间复杂度:O(n2n^2n2)def partition(list, left, right): temp = list[left] while left < right: while left < right and list[right] >= temp: ri原创 2021-06-20 22:02:30 · 103 阅读 · 0 评论 -
冒泡排序、选择排序、插入排序——python数据结构
文章目录冒泡排序选择排序插入排序冒泡排序列表每两个相邻的数,如果前面的比后面大则交换这两个数时间复杂度:O(n2n^2n2)def bubble_sort(list): for i in range(len(list) - 1): flag = 0 for j in range(len(list) - i - 1): if list[j] > list[j+1]: flag = 1原创 2021-06-20 16:47:12 · 99 阅读 · 0 评论 -
列表查找(顺序查找、二分查找)——python数据结构
文章目录列表查找顺序查找二分查找列表查找输入:列表、待查找元素输出:元素下标列表内置查找函数:index()时间复杂度:O(n)顺序查找(线性查找)从列表第一个元素开始,顺序进行搜索def linear_search(list, value): for i, v in enumerate(list): if v == value: return i return None# testlist = [1, 2, 3, 4]i原创 2021-06-17 21:43:00 · 589 阅读 · 0 评论 -
汉诺塔——python数据结构
def hanoi(n, a, b, c): if n > 0: hanoi(n - 1, a, c, b) print('moving the plate from {} to {}'.format(a, c)) hanoi(n - 1, b, a, c)hanoi(3, 'A', 'B', 'C')原创 2021-06-17 21:06:11 · 92 阅读 · 0 评论 -
python基础——列表、字符串、集、字典的内置方法
概要序列运算:列表的相关方法:字符串相关方法:集支持的运算集提供的方法有序集合:列表,字符串,元组;无序集合:字典,集;列表和字符串的主要区别在于列表可以修改而字符串不能;元组与列表十分相似,但元组也是不可修改的。序列运算:运算名运算符解释索引[ ]去序列中某个元素连接+将序列连接在一起重复*重复N次连接成员in询问序列中是否有某元素长度len询问序列的元素个数切片[:]取出序列的一部分列表的相关方法:方原创 2021-03-01 16:25:56 · 275 阅读 · 1 评论