自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 5.数据结构2——深度优先搜索与广度优先搜索解决迷宫问题

栈应用——深度优先搜索思路:上下左右,不行就回退,看别的岔路,能走的点放到栈里走过的路标记为墙(走回头路没有意义)最后栈空表示没有通路特点:代码简单,但搜索路径并不一定是min算法实现:(lambda函数的应用参考)细说Python的lambda函数用法,建议收藏 - 知乎在Python中有两种函数,一种是def定义的函数,另一种是lambda函数,也就是大家常说的匿名函数。今天我就和大家聊聊lambda函数,在Python编程中,大家习惯将其称为表达式。 1.为什么要用l...

2021-11-28 12:05:08 896

原创 4.数据结构1——列表、栈与队列

数据结构1——列表需要研究列表的以下几个问题:python列表和c++数组对比:1.数组元素类型必须相同,列表可以不同2.数组长度固定,列表长度超过时系统帮你添加在32位机上一个整数占32位,即4字节(64位机上就是8字节,同理)如下图(不知道看得到否),假设c++数组中a[0]位置的元素是100,那么a[2]位置的元素为100+4*1=104,但是python列表是跳跃的比如列表中第一个元素对应计算机中100,第二个对应305,第三个对应12,这里的100,305,12叫地..

2021-11-21 10:50:47 844

原创 3.排序算法06——归并排序

前情提要:我真的好喜欢这个算法啊,感觉学完堆排序其他的都充满光明与希望。简而言之,一个列表分成两半,对两段分别遍历,谁小谁出来,最后使得两段有序列表变为一段有序列表,这个过程叫一次归并。比大小,1出来 ,j箭头右移到3下方比大小,2出来,i箭头右移到5下方,以此类推到一边全部遍历完之后,另外一边的数直接全部导入新列表即可以下三个红色箭头从左至右分别代表low, mid, high算法思路第一要义是先写出归并算法,根据上面分析可得:def merge(li...

2021-11-20 22:50:18 1061

原创 3.排序算法05——堆排序算法

树的定义二叉树满二叉树与完全二叉树完全二叉树=满二叉树拿走几个(只能右边拿走,左边必须充满的)例如:1.在下图的b中删去12号也是完全二叉树2.在下图的b中删去12,11也是完全二叉树3.在下图的b中删去9不是完全二叉树就是横过来读公式*2:1.已知父节点下标为i,左子节点下标为2*i+1,右子节点下标为2*i+22.已知子节点(左右都一样)下标为j,父节点下标为(j-1)//2堆的定义:以下单独来看都可称之为堆,把堆比作行政机关的话,上一级...

2021-11-13 19:38:36 912

原创 3.排序算法03——插入排序

我觉得这个比喻很好...而插入排序的基本思路就是取第一个数作为“手牌”,接下来n-1个数看作摸到的牌,所以一共要摸n-1次。所以循环n-1次完成n-1次插入,每次把无序区第一个数取出从[i]开始往前比大小这样的循环一共进行n-1次从[1]位置到[len(n)-1]位置所以循环应该写成for i in range(1,len(li)):拿出这个摸到的牌,和前面有序区(即手牌)的最后一项开始向前比大小以找到插入位置。就比如说我抽到了6这张牌,和7比,比7小,那么将7右移一格然后...

2021-10-31 13:19:49 47

原创 3.排序算法04——快速排序

emmm...可怜的温中高二学子,星期六上了一天课,回到家持续学习算法还有洛伦兹力和解析几何等着我,看了4种排序算法,个人认为最后一种最难理解,先记下来,简单的冒泡排序,选择排序,插入排序再说吧,两周后要期中考了明天还要一早起来写卷子。快速排序属于较快的排序方法:我可以先考虑假如我已经设计了一个算法partition(li,left,right):可以把第一个数取出,放到某一位置,使得该位置左侧的所有数皆小于这个数,该位置右侧所有数皆大于这个数,那么,我把这个列表以这个数为界,分为左右两边,分别在两

2021-10-30 22:59:48 89

原创 2.顺序查找与二分查找

顺序查找,又叫线性查找,时间复杂度为O(n)相对较慢,内置函数index属于顺序查找,代码见下示例分析,比如说要在n[1,2,3,4,5,6,7,8,9]这个序列中查找m=31.先确定首末位置为left=0,right=len(n)-1,mid=(left+right)//22.对比mid和m,发现m小于n[mid],把right更新为mid-13.更新mid值:mid=(left+right)//24.发现n[mid]小于m更新left的值为mid+15...

2021-10-23 13:52:26 89

原创 1.递归算法

递归算法的两个特点:1.调用自身 2.结束条件判断下面4个函数哪个是正确的递归:答案:1、 2是错误的,1缺少结束条件,2结束条件无法起作用。思考:3、 4有什么区别事实证明,3,4区别如下:这个是3这个是4...

2021-10-22 21:52:15 122

原创 算法入门——时间复杂度与空间复杂度

时间复杂度是一个单位概念,是衡量程序复杂程度或同等条件下程序运行快慢的标准。我们记输出,加减乘除四则运算的复杂度为O(1)(O在这里表示数学上的一个上界的概念),相应的,嵌套k层循环的程序复杂度就是n的k次方。但是要注意,时间复杂度是一个单位就是把O(1)定义为一个单位,不管是输出一个语句还是你打五个print输出五个语句,其复杂度都是O(1),同理如果有循环a{输出a,循环b{输出b}}应该为O(n²+n)的复杂度,因为其n对n²而言微不足道,故而其复杂度应该是O(n²),上面是错的,具体如下:...

2021-10-22 16:49:12 485

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除