自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构与算法(二十八)

#二叉搜索树:#二叉搜索树:class BinarySearchTree: def __init__(self): self.root = None self.size = 0 def length(self): return self.size def __len__(self): return self.size def __iter__(self): return self.ro

2021-02-08 08:21:14 169

原创 2021-02-07

#!/usr/bin/python3#coding=utf8import sysif sys.version_info.major == 2: print('Please run this program with python3!') sys.exit(0)import cv2import numpy as npimport pidimport timeimport mathimport signalimport socketimport threadingimpo

2021-02-07 13:33:57 188

原创 数据结构与算法(二十八)

二叉堆一,基本操作与准备知识:子节点总是比父节点大二叉堆的下标性质要求根节点下标必须为1,因此下标为零的项不用二叉堆操作的实现:1,二叉堆初始化:#二叉堆的实现:class Binheap: def __init__(self): self.heapList = [0] self.currentSize = 02,二叉堆——insert(key)方法: def percUp(self,i): #上浮方法上浮到不能再上浮

2021-02-07 08:40:15 164

转载 数据结构与算法(二十七)

树的遍历:巨人的肩膀https://blog.csdn.net/wd9ljs18/article/details/108729776?ops_request_misc=&request_id=&biz_id=102&utm_term=%25E6%2595%25B0%25E6%258D%25AE%25E7%25BB%2593%25E6%259E%2584%25E4%25B8%258E%25E7%25AE%2597%25E6%25B3%2595python%25E6%25A0%2591

2021-02-06 09:55:40 87

原创 数据结构与算法(二十六)

树的应用:表达式解析前言一、建立表达式解析树:思路:❖从图示过程中我们看到,创建树过程中关键的是对当前节点的跟踪创建左右子树可调用insertLeft/Right当前节点设置值,可以调用setRootVal下降到左右子树可调用getLeft/RightChild但是,上升到父节点,这个没有方法支持!❖我们可以用一个栈来记录跟踪父节点当前节点下降时,将下降前的节点push入栈当前节点需要上升到父节点时,上升到pop出栈的节点即可!代码实现:#表达式解析树:

2021-02-06 08:38:50 167

原创 数据结构与算法(二十五)

树的链表实现:提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录树的链表实现:前言一、节点链表法实现数:二、代码实现:例子:前言一、节点链表法实现数:定义一个BinaryTree类1成员key保存根节点数据项2成员left/rightChild则保存指向左/右子树的引用(同样是BinaryTree对象二、代码实现:#树的链表实现:

2021-02-05 16:15:26 75

原创 数据结构与算法(二十四)

树的嵌套列表实现提示:下文为二叉树的数据结构实现嵌套列表法:递归的嵌套列表实现二叉树,由具有3个元素的列表实现:第1个元素为根节点的值;第2个元素是左子树(所以也是一个列表);第3个元素是右子树(所以也是一个列表)。[root,left,rifht]优点:子树的结构与树相同,是一种递归数据结构很容易扩展到多叉树,仅需要增加列表元素即可一、六节点的二叉树实现:mytree = ['a',['b',['d',[],[]],['e',[],[]]],['c',['f',[],[]],

2021-02-05 12:38:21 116

原创 数据结构与算法(二十三)

映射抽象数据类型及Python实现#哈希表实现:class Hashtable: def __init__(self,n): self.size = n #根据实际情况设定 self.slots = [None] * self.size self.data = [None] * self.size def hashfuncation(self,key): return key%self.size def reha

2021-02-05 12:10:10 115 1

原创 数据结构与算法(二十二)

归并排序:巨人的肩膀:https://blog.csdn.net/qq_43665254/article/details/112910139?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_utm_term-3&spm=1001.2101.3001.4242# coding:utf-8def merge_sort(alist): '''归并排序''' n = len(alist) # 跳出递归的条件

2021-02-03 10:15:02 75

原创 数据结构与算法(二十一)

谢尔排序:插入排序回顾:#插入排序算法:def insertSort(alist): for index in range(1,len(alist)): currentvalue = alist[index] position = index while position > 0 and alist[position-1] > currentvalue: alist[po

2021-02-03 10:03:00 83

原创 数据结构与算法(二十)

插入排序算法及分析:❖插入排序维持一个已排好序的子列表,其位置始终在列表的前部,然后逐步扩大这个子列表直到全表图示:#插入排序算法:def insertSort(alist): for index in range(1,len(alist)): currentvalue = alist[index] position = index while position > 0 and alist[po

2021-02-03 09:37:26 82

原创 数据结构与算法(十九)

冒泡排序和选择排序算法分析:冒泡排序:❖冒泡排序的算法思路在于对无序表进行多趟比较交换,❖每趟包括了多次两两相邻比较,并将逆序的数据项互换位置,最终能将本趟的最大项就位❖经过n-1趟比较交换,实现整表排序❖每趟的过程类似于“气泡”在水中不断上浮到水面的经过#冒泡排序算法:def bubbleSort(alist): for num in range(len(alist)-1,0,-1): for i in range(num): if ali

2021-02-03 09:16:34 65

原创 数据结构与算法(十八)

顺序查找算法及二分查找一、顺序查找:def sequentialSearch(alist,item): pos = 0 found = False while pos < len(alist) and not found : if alist[pos] == item: found = True else: pos= pos + 1 return found算法复杂度:O(n)二:

2021-02-02 16:05:34 51

原创 数据结构与算法(十六)

巨人的肩膀:https://blog.csdn.net/feriman/article/details/104564753递归可视化——分形树文章目录递归可视化——分形树准别工作:一、一个递归作图的例子:二、自相似递归图形:分形树:自相似递归图形准别工作:一、一个递归作图的例子:def draw1(t,linlen): if linlen > 0: t.forward(linlen) t.right(90) draw1(t,lin

2021-02-02 11:18:43 82

原创 数据结构与算法(十五)

递归的应用:任意进制转换#学自北京大学陈斌老师前言:递归三定律的回顾:❖为了向阿西莫夫的“机器人三定律”致敬,递归算法也总结出“三定律”1,递归算法必须有一个基本结束条件(最小规模问题的直接解决)2,递归算法必须能改变状态向基本结束条件演进(减小问题规模)3,递归算法必须调用自身(解决减小了规模的相同问题)一、三定律与进制转换的关联?基本结束条件:余数小于“进制基base”(要转换成n进制的n),是“基本结束条件”,可直接进行查表转换减小问题规模+调用自身:整数商成为“更小

2021-02-02 10:28:43 75

原创 数据结构与算法(十四)

递归!文章目录递归!一、递归是什么?二、递归三定律一、递归是什么?❖递归是一种解决问题的方法,其精髓在于将问题分解为规模更小的相同问题,持续分解,直到问题规模小到可以用非常简单直接的方式来解决。递归的问题分解方式非常独特,其算法方面的明显特征就是:在算法流程中调用自身。❖递归为我们提供了一种对复杂问题的优雅解决方案,精妙的递归算法常会出奇简单,令人赞叹。求和例子:递归程序代码:def listnum(numlist): if len(numlist) == 1:

2021-02-02 10:11:14 68

原创 数据结构与算法(十三)

有序表抽象数据类型及Python实现一、有序表是什么?❖有序表是一种数据项依照其某可比性质(如整数大小、字母表先后)来决定在列表中的位置❖越“小”的数据项越靠近列表的头,越靠“前”二、使用步骤1.相关操作介绍2.有序表OrderedList实现:❖同样采用链表方法实现❖Node定义相同❖OrderedList也设置一个head来保存链表表头的引用class OrderedList: #有序表类型的链表 def __init__(self): se

2021-02-02 09:59:01 59

原创 数据结构与算法(十三)

无序表抽象数据类型及Python实现一、无序表是什么?如何实现:数据项存放位置并没有规则,但如果在数据项之间建立链接指向,就可以保持其前后相对位置第一个和最后一个数据项需要显式标记出来,一个是队首,一个是队尾,后面再无数据了。节点Node: 链表实现的最基本元素是节点Node。每个节点至少要包含2个信息:数据项本身,以及指向下一个节点的引用信息注意next为None的意义是没有下一个节点了二、链表实现:节点Node#链表实现,节点Node:class Node: def __

2021-02-02 09:30:04 113

原创 数据结构与算法(十二)

双端队列抽象数据类型及Python实现一、双端队列——Deque是什么?特点:首尾皆可以加入移除数据。LIFO:先进后出FIFO:先进先出双端队列不具备上述两种性质二、相关操作介绍1.图片介绍2.python实现ADT Deque#定义双端队列:class Deque: def __init__(self): self.items = [] def isEmpty(self): return self.items

2021-02-01 12:27:31 73

原创 数据结构与算法(十一)

队列的应用:打印任务前言规则:“打印机遵循先到先服务也即先进先出原则”打印机有两种模式性能——草稿模式一分钟十页但质量不佳——正常模式每分钟五页但质量佳一、出现了一个问题:要怎么设定打印机的模式,让大家都不会等太久的前提下尽量提高打印质量二、问题建模:1.对象:打印任务,打印队列,打印机打印任务的属性:提交时间、打印页数打印队列的属性:具有FIFO性质(先进先出性质)的打印任务队列打印机的属性:打印速度、是否忙2.过程:生成和打印任务:确定生成概率:实例为每小时会有10个学生

2021-02-01 09:59:49 256

原创 数据结构与算法(十)

热土豆问题&&打印任务一、热土豆问题示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('ignore')import sslssl._

2021-02-01 09:12:30 122 1

原创 数据结构与算法(九)

队列抽象数据类型及Python实现一、队列是什么?特点:新数据的添加总发生在一端,现存数据项的移除总发生在另一端。——先进先出——排队——Queue二、抽象数据类型Queue1.相关操作2.python实现Queue#定义队列:list 的首段为队尾class Queue: def __init__(self): self.items = [] def isEmpty(self): return self.items == []

2021-01-31 11:33:20 49

原创 数据结构与算法(八)

后缀表达式求值思路:操作数入栈,然后碰到操作符出栈顶的两个操作数,之后得到结果加到栈顶。一、算法:def postfix_evaluation(postfix, operand): stack = [] # 操作数栈 for i in postfix: # 1、若为操作数(字母):入栈 if 97 <= ord(i) <= 122: i = float("".join(operand[str(i)])) # 将字

2021-01-31 09:14:54 79

原创 数据结构与算法(七)

栈的应用:表达式转换前言:中缀如何转换为前缀和后缀?答:将中缀表达式转换成全括号中缀表达式,之后用符号代替括号即可。一、中缀如何转成后缀?1.观察:(中缀)A+BC——>(后缀)ABC+2.思路:操作数ABC的顺序没有改变。操作符的出现顺序,在后缀表达式中反转了——>操作符用栈来存储。3.发现:(中缀)(A+B)C——>(后缀)AB+C。发现+*未反转。原因:这里+的输出比乘号要早,主要是因为括号使得+的优先级提升,高于括号之外的乘号。*❖回顾上节的“全括号”表达式,后缀

2021-01-31 08:39:57 181

原创 数据结构与算法(六)

栈的应用:十进制转换为二进制一、十进制&&二进制?十进制:是用0~9这十个字符表示二进制:是用0~1这两个字符表示转换实例:十进制数字233对应的二进制数字为11101001二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarning

2021-01-30 11:42:11 815

原创 数据结构与算法(五)

栈的介绍及应简单括号匹配栈:stack❖抽象数据类型“栈”定义为如下的操作Stack():创建一个空栈,不包含任何数据项push(item):将item加入栈顶,无返回值pop():将栈顶数据项移除,并返回,栈被修改peek():“窥视”栈顶数据项,返回栈顶的数据项但不移除,栈不被修改isEmpty():返回栈是否为空栈size():返回栈中有多少个数据项操作实例:根据push()方法,可知栈顶为列表尾部,栈底为列表前部手动定义栈:class Stack: def __i

2021-01-30 11:02:27 108 1

原创 数据结构与算法(四)

PYTHON数据类型的性能;一、Python两种内置数据类型上各种操作的大O数量级:二、列表:三:字典:❖Python官方的算法复杂度网站:https://wiki.python.org/moin/TimeComplexity

2021-01-29 21:29:22 54

原创 数据结构与算法(三)

学习目标:提示:这里可以添加学习目标例如:一周掌握 Java 入门知识学习内容:提示:这里可以添加要学的内容例如:1、 搭建 Java 开发环境2、 掌握 Java 基本语法3、 掌握条件语句4、 掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:1、 周一至周五晚上 7 点—晚上9点2、 周六上午 9 点-上午 11 点3、 周日下午 3 点-下午 6 点学习产出:提示:这里统计学习计划的总量例如:1、 技术笔记 2 遍2、CSDN 技术博客 3 篇

2021-01-29 21:18:22 96

原创 数据结构与算法(二)

前言介绍内容:大O表示法:一、相关概念引出及介绍1:算法时间度量指标——赋值语句: 一条赋值语句同时包含了表达式计算 和 变量存储两个基本资源2:联系:所以赋值语句被执行的次数与算法执行的时间直接挂钩二、大O表示法相关例子:a = 5b = 6c =10for i in range(n): for j in range(n): x = i*j y = j*j z = i*ifor k in range(n): w = a*k+45 v = b*bd = 33

2021-01-29 11:33:19 84

原创 数据结构与算法(一)

eg:累计求和问题:#累加求和程序1def Sum(n): thesum = 0 for i in range(1,n+1): thesum = thesum + i return thesumprint(Sum(100))#累加求和问题:def foo(tom): f = 0 for bil in range(1,t+1): b = bill f = f + b return fprint(foo(100))明显可见,第一个.

2021-01-29 11:11:24 198

空空如也

空空如也

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

TA关注的人

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