
Python数据结构与分析
文章平均质量分 66
爬虫选手_不懂就问
这个作者很懒,什么都没留下…
展开
-
Python算法入门day10——动态规划
分析找到递推式存子问题【钢条切割问题】1、题目描述某公司出售钢条,出售价格与钢条长度之间对关系如下表:问题:现在有一段长度为n的钢条和上面的价格表,求切割钢条方案,使得总收益最大。长度为4的钢条的所有切割方案如下:(c方案最优)思考:长度为n的钢条的不同切割方案有几种?答:长度为n就有2^(n-1)次切割方法给出题目的最优表现在就是需要从小到大的最优解算出来即可,即当要计算长度为4的最优解,可以观察前面的(1+3)的最优解是多少,(2+2)的最优解是多少,以及原创 2022-03-29 16:26:10 · 805 阅读 · 0 评论 -
Python算法入门day9——贪心算法
【贪心算法的定义】贪心算法(又称贪婪算法)是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,它所做出的是在某种意义上的局部最优解贪心算法并不保证会得到最优解,但在某些问题上贪心算法的解就是最优解。要会判断一个问题是否用贪心算法来计算。【问题一:找零问题】【题目描述】假设商店老板需要找零n元钱,钱币的面额有:100元、50元、20元、5元、1元,如何找零使得所需要的钱币的数量最少?【题目思路】就是首先找最大的面额的能输出几张,剩下最小的金额,再找原创 2022-03-27 21:43:44 · 1478 阅读 · 0 评论 -
Python算法入门day4——常见列表算法分析4 归并排序详解
归并排序原创 2022-03-20 19:52:02 · 264 阅读 · 0 评论 -
Python算法入门day3——常见列表算法分析2 快速排序
快速排序原创 2022-03-18 11:51:57 · 511 阅读 · 0 评论 -
Python算法入门day4——常见列表算法分析3 堆排序详解
堆排序1.树是一种数据结构2.树是一种可以递归定义堆数据结构3.树是由n个节点组成的集合: 1.如果n=0,则是一个空树2.如果n>0,那存在一个节点作为树的根节点,其他节点可以分为m个集合,每个集合本身又是一棵树。树的基本概念1.根节点(图中的A)2.叶子节点(图中的B,C,H,I,P,Q,K,L,M,N)没有分叉就是叶子的节点3.树的深度(看树的最深有多少层数) P,Q就是44.节点的度(对于E这个节点,是有两个度)几个...原创 2022-03-20 15:24:09 · 1151 阅读 · 0 评论 -
Python算法入门day2——常见列表算法分析1 冒泡、选择、插入
冒泡排序、选择排序、插入排序原创 2022-03-17 21:03:32 · 1099 阅读 · 0 评论 -
Python算法入门Day2——括号匹配
【栈的抽象数据类型——操作】Stack() 创建一个空栈。它不需要参数,且会返回返回值push(item) 将一个元素添加到栈的顶端。它需要一个参数item,且无返回值pop() 将栈顶端的元素移除。它不需要参数,但会返回顶端的元素,并修改栈的内容peek() 返回栈顶端元素,但是并不移除该元素。它不需要参数,也不会修改栈的内容isEmpty() 检查栈是否为空。它不需要参数,且返回布尔值size() 返回栈中元素的数目。它不需要参数,且会返回一个整数【题目——简单括号匹配】原创 2022-03-17 08:50:13 · 2239 阅读 · 0 评论 -
Python算法入门day5——常见列表算法分析5 希尔排序,桶排序,计数排序,基数排序
排序老大哥——希尔排序,桶排序,计数排序,基数排序。原创 2022-03-22 21:44:45 · 689 阅读 · 0 评论 -
Python算法入门day6——查找排序简单面试题leetcode
1.(力扣242)给两个字符串s和t,判断t是否为s的重新排列后组成的单词s="anagram",t = "nagaram",return Trues="rat",t="cat",return False【方法一】sorted和sort的区别可以看看这一篇Python每日一练——Sort()与Sorted()的区别_m0_48936146的博客-优快云博客sort():是在原位重新排序的,是改变原来列表的。a=[1,3,5,7,2]print(sorted(a))#1,2,3,5,7a.s原创 2022-03-24 12:09:58 · 765 阅读 · 0 评论 -
Python算法入门day7——队列Queue
【简单介绍】1.队列是一个数据集合,仅允许在列表的一端进行插入,另一端进行删除。2.进行插入的一端称为队尾(rear),插入动作称为进队或入队。3.进行删除队一端称为队头(front),删除动作称为出队。4.队列队性质:先进先出【队列队实现方式——环形队列】相比列表形式,更充分的利用了空间1.环形队列:当队首队尾指针front==Maxsize-1(队列大小),再前进一个位置就自动到0即当rear到11时,下一跳是0,需要(11+1)%12==02.队满:(rear+原创 2022-03-25 16:24:22 · 1944 阅读 · 1 评论 -
Python算法入门day7——栈和队列的应用(迷宫问题)
【题目描述】给一个二维列表,表示迷宫(0表示通道,1表示围墙)。给出算法,求一条走出迷宫的路径。一、栈——深度优先搜索1.回溯法2.思路:从一个节点开始,上下左右任意找下一个能走的点,当找不到能走的点时,退回上一个点寻找是否有其他方向的点。3.使用栈存储当前路径4.使用匿名函数lambda定义坐标上下左右走,可以看看下面这篇Python中lambda使用简单小结_alxe_made的博客-优快云博客_lambda python用法lambda简单介绍1. 什么是lambda原创 2022-03-26 13:04:23 · 507 阅读 · 0 评论 -
Python算法入门day9——二叉树
1.二叉树的定义二叉树的链式存储:将二叉树的节点定义为一个对象,节点之间通过类似链表的链接方式来连接。#二叉树class BiTreeNode: def __init__(self,data): self.data=data #存储节点中的数据 self.lchild=None #左孩子 self.rchild=None #右孩子#案例a=BiTreeNode("A")b=BiTreeNode("B")c=BiTreeNode("C原创 2022-03-27 15:58:07 · 2736 阅读 · 1 评论 -
Python算法入门day1——顺序查找和二分查找
【顺序查找】(Linear Search)也叫线性查找,从列表第一个元素开始,顺序进行搜索,直到找到元素或者搜索到列表最后一个元素为止。内置函数 index()时间复杂度 O(n)【代码实现】#顺序查找def linear_Search(data_set,value):#列表,要找的数 for i in range(len(data_set)): if data_set[i]==value: return i return #结原创 2022-03-16 20:30:38 · 906 阅读 · 0 评论 -
Python数据分析——列表性能测试
首先准备了常用的四种方法from timeit import Timer #导入timeit模块对函数计时间#列表连接def test1(): l=[] for i in range(10000): l+=[i]#追加列表 def test2(): l=[] for i in range(10000): l.append(i)#列表推导式 def test3(): l=[i for i原创 2022-03-15 11:25:08 · 993 阅读 · 1 评论 -
Python——基础简单递归算法2
1.【判断一个字符串是否为回文数】返回True or False【解题思路】只需要判断最后一个字符与第一个字符是否相同就行。【代码1——常规】相对只要判断正序和倒序是否相同就可以#常规做法def huiwen1(n): if n==n[::-1]:#正序和倒序做比较 return True else: return Falseprint(huiwen("abccba"))【代码2——便捷】因为比较运算符直接就可以判断Tr原创 2022-03-14 10:44:31 · 302 阅读 · 0 评论 -
Python——基础简单递归算法练习1
【题目】1~N求和【题目解析】假设N=5第5项==>[1,2,3,4]+54==>[1,2,3]+43==>[1,2]+32==>[1]+21==>[0]+1【正向代码】def ac(l): if l==[]: return 0 else: return l[0]+ac(l[1:])print(ac([1,2,3,4,5]))【反向代码】#递归练习——1~n求和原创 2022-03-11 21:26:46 · 1267 阅读 · 0 评论 -
Python——“变位词”判断问题的四种解法
【题目描述】所谓“变位词”是指两个词之间存在组成字母的重新排列关系如:heart和earth,python和typhon为了简单起见,假设参与判断的两个词仅由小写字母构成,而且长度相同【解法1】逐字检查法【解法思路】将词1中的字符逐个到词2中检查是否存在,如果存在就“打勾”标记(防止重复检查)如果每个字符都能找到,则两个词就是变位词只要有一个字符找不到,就不是变位词【运算代码】def anagramSolution(s1,s2): if len(s1原创 2022-03-09 14:28:53 · 2644 阅读 · 0 评论 -
Python算法入门day8——链表
一、链表【链表的定义】链表是由一系列节点组成的元素集合。每个节点包含两部分,数据域item和指向下一个节点的指针next。通过节点之间的互相连接,最终串联成一个链表。class Node(object): def __init__(self,item): self.item=item self.next=Nonea=Node(1)b=Node(2)c=Node(3)a.next=bb.next=cprint(a.next.item) #2p原创 2022-03-26 19:02:29 · 1398 阅读 · 0 评论 -
python数据结构与算法分析——牛顿迭代法
【用法】用于近似求解平方根当牛顿迭代法,使用迭代计算当方法来求解正确的值。【公式】【代码测验】def mysqrt(n): x=n/2 #初次猜测的平方根是n/2 for i in range(20): x=(1/2)*(x+(n/x)) return xprint(mysqrt(9))...原创 2022-02-28 10:09:37 · 484 阅读 · 0 评论