2023年2月1日

Python-AVL树

摘要: 查看代码 class BiTreeNode: def __init__(self, data): self.data = data self.lchild = None # 左孩子 self.rchild = None # 右孩子 self.parent = None class BST: def 阅读全文

posted @ 2023-02-01 15:27 夜黎i 阅读(20) 评论(0) 推荐(0)

Python-二叉搜索树

摘要: class BiTreeNode: def __init__(self, data): self.data = data self.lchild = None # 左孩子 self.rchild = None # 右孩子 self.parent = None class BST: def __ini 阅读全文

posted @ 2023-02-01 15:20 夜黎i 阅读(25) 评论(0) 推荐(0)

Python-二叉树

摘要: from collections import deque class BiTreeNode: def __init__(self, data): self.data = data self.lchild = None # 左孩子 self.rchild = None # 右孩子 a = BiTre 阅读全文

posted @ 2023-02-01 15:17 夜黎i 阅读(25) 评论(0) 推荐(0)

Python-树

摘要: 树实例:模拟文件系统 class Node: def __init__(self, name, type='dir'): self.name = name self.type = type # 'dir' or 'file' self.children = [] self.parent = None 阅读全文

posted @ 2023-02-01 15:14 夜黎i 阅读(42) 评论(0) 推荐(0)

Python-哈希表

摘要: class LinkList: class Node: def __init__(self, item=None): self.item = item self.next = None class LinkListIterator: def __init__(self, node): self.no 阅读全文

posted @ 2023-02-01 15:11 夜黎i 阅读(20) 评论(0) 推荐(0)

Python-链表

摘要: class Node: def __init__(self, item): self.item = item self.next = None def create_linklist_head(li): # 头插法:从链表的表头开始插入,每插入一个数,表头都会变成当前的这个数 head = Node 阅读全文

posted @ 2023-02-01 15:09 夜黎i 阅读(26) 评论(0) 推荐(0)

Python-迷宫问题-使用队列解决迷宫问题

摘要: from collections import deque maze = [ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 1, 1, 1, 1, 0, 1, 1, 1], [1, 0, 1, 1, 1, 1, 0, 1, 0, 1], [1, 0, 1, 0, 0, 阅读全文

posted @ 2023-02-01 15:02 夜黎i 阅读(88) 评论(0) 推荐(0)

Python-迷宫问题-使用栈解决迷宫问题

摘要: # 迷宫 maze = [ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 1, 1, 1, 1, 0, 1, 1, 1], [1, 0, 1, 1, 1, 1, 0, 1, 0, 1], [1, 0, 1, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0 阅读全文

posted @ 2023-02-01 15:00 夜黎i 阅读(91) 评论(0) 推荐(0)

Python-队列

摘要: 注:当front == rear时,判断为空队列! class Queue: def __init__(self, size=100): self.queue = [0 for _ in range(size)] self.size = size self.rear = 0 # 队尾指针 self. 阅读全文

posted @ 2023-02-01 14:56 夜黎i 阅读(42) 评论(0) 推荐(0)

Python-栈

摘要: 查看代码 class Stack: def __init__(self): self.stack = [] def push(self, element): self.stack.append(element) def pop(self): return self.stack.pop() def g 阅读全文

posted @ 2023-02-01 14:53 夜黎i 阅读(16) 评论(0) 推荐(0)

Python-动态规划-钢条切割问题

摘要: 查看代码 import time # 代码运行时间装饰器 def cal_time(func): def wrapper(*args, **kwargs): t1 = time.time() result = func(*args, **kwargs) t2 = time.time() print( 阅读全文

posted @ 2023-02-01 14:48 夜黎i 阅读(54) 评论(0) 推荐(0)

Python-动态规划-最长公共子序列

摘要: 查看代码 def lcs_length(x, y): m = len(x) n = len(y) c = [[0 for _ in range(n + 1)] for _ in range(m + 1)] for i in range(1, m + 1): for j in range(1, n + 阅读全文

posted @ 2023-02-01 14:46 夜黎i 阅读(75) 评论(0) 推荐(0)

Python-动态规划-斐波那契数列

摘要: # 斐波那契数列:Fn = Fn-1 + Fn-2 def fibnacci(n): # 子问题的重复计算 if n == 1 or n == 2: return 1 else: return fibnacci(n - 1) + fibnacci(n - 2) # 动态规划(DP)的思想 # 1.最 阅读全文

posted @ 2023-02-01 14:42 夜黎i 阅读(42) 评论(0) 推荐(0)

Python-基数排序

摘要: def radix_sort(li): max_num = max(li) # 最大值 9->1, 99->2, 999->3以此类推 it = 0 while 10 ** it <= max_num: buckets = [[] for _ in range(10)] for var in li: 阅读全文

posted @ 2023-02-01 14:36 夜黎i 阅读(13) 评论(0) 推荐(0)

Python-桶排序

摘要: def bucket_sort(li, n=100, max_num=10000): buckets = [[] for _ in range(n)] # 创建桶 for var in li: i = min(var // (max_num // n), n - 1) # i表示var放到几号桶 b 阅读全文

posted @ 2023-02-01 14:36 夜黎i 阅读(23) 评论(0) 推荐(0)

Python-计数排序

摘要: def count_sort(li, max_count=100): """ :param li: 列表 :param max_count: 列表中最大的数 :return: """ count = [0 for _ in range(max_count+1)] for val in li: cou 阅读全文

posted @ 2023-02-01 14:35 夜黎i 阅读(19) 评论(0) 推荐(0)

Python-希尔排序

摘要: def insert_sort(li, gap): for i in range(gap, len(li)): # i 表示摸到的牌的下标 tmp = li[i] j = i - gap # j 指的是手里的牌的下标 while j >= 0 and li[j] > tmp: li[j + gap] 阅读全文

posted @ 2023-02-01 14:34 夜黎i 阅读(23) 评论(0) 推荐(0)

python-归并排序

摘要: def merge(li, low, mid, high): # 需要mid左右两边的列表是有序的 i = low j = mid + 1 ltmp = [] while i <= mid and j <= high: # 左右两边都要有数 if li[i] < li[j]: ltmp.append 阅读全文

posted @ 2023-02-01 14:33 夜黎i 阅读(25) 评论(0) 推荐(0)

Python-堆排序_topk问题

摘要: def sift(li, low, high): """ 堆调整 :param li: 列表 :param low: 堆的根节点位置 :param high: 堆的最后一个元素的位置 :return: """ i = low j = 2 * i + 1 tmp = li[low] while j < 阅读全文

posted @ 2023-02-01 14:32 夜黎i 阅读(23) 评论(0) 推荐(0)

Python-堆排序

摘要: import random def sift(li, low, high): """ 堆调整 :param li: 列表 :param low: 堆的根节点位置 :param high: 堆的最后一个元素的位置 :return: """ i = low # i最开始指向根节点 j = 2 * i + 阅读全文

posted @ 2023-02-01 14:30 夜黎i 阅读(30) 评论(0) 推荐(0)

Python-快速排序

摘要: import random # import sys # sys.setrecursionlimit() # 修改递归最大深度 def partition(li, left, right): tmp = li[left] while left < right: while left < right 阅读全文

posted @ 2023-02-01 14:28 夜黎i 阅读(18) 评论(0) 推荐(0)

Python-插入排序

摘要: import random def insert_sort(li): for i in range(1, len(li)): # i 表示摸到的牌的下标 tmp = li[i] j = i - 1 # j 指的是手里的牌的下标 while j >= 0 and li[j] > tmp: li[j+1 阅读全文

posted @ 2023-02-01 14:27 夜黎i 阅读(22) 评论(0) 推荐(0)

Python-选择排序

摘要: import random def select_sort_simple(li): li_new = [] for i in range(len(li)): min_val = min(li) li_new.append(min_val) li.remove(min_val) return li_n 阅读全文

posted @ 2023-02-01 14:27 夜黎i 阅读(11) 评论(0) 推荐(0)

Python-冒泡排序

摘要: def bubble_sort(li): for i in range(len(li) - 1): # 第i趟 exchange = False for j in range(len(li) - i - 1): if li[j] > li[j+1]: li[j], li[j+1] = li[j+1] 阅读全文

posted @ 2023-02-01 14:25 夜黎i 阅读(13) 评论(0) 推荐(0)

Python-二分查找

摘要: 查看代码 def binary_search(li, val): left = 0 right = len(li) - 1 while left <= right: # 候选区有值 mid = (left + right) // 2 if li[mid] == val: return mid eli 阅读全文

posted @ 2023-02-01 14:24 夜黎i 阅读(8) 评论(0) 推荐(0)

Python-顺序查找

摘要: # 顺序查找又称线性查找 def linear_search(li, val): for ind, v in enumerate(li): if v == val: return ind else: return None 阅读全文

posted @ 2023-02-01 14:18 夜黎i 阅读(18) 评论(0) 推荐(0)

Python-汉诺塔问题

摘要: def hanoi(n, a, b, c): if n > 0: hanoi(n - 1, a, c, b) print("盘子从%s 移到 %s 了" % (a, c)) hanoi(n - 1, b, a, c) hanoi(3, "A", "B", "c") 阅读全文

posted @ 2023-02-01 14:18 夜黎i 阅读(21) 评论(0) 推荐(0)

模板方法模式

摘要: 内容: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 角色: 抽象类(AbstractClass):定义抽象的原子操作(钩子操作); 实现一个模板方法作为算法的骨架。 具体类(ConcreteClass):实现原子操 阅读全文

posted @ 2023-02-01 14:13 夜黎i 阅读(17) 评论(0) 推荐(0)

策略模式

摘要: 内容: 定义一系列的算法,把它们一个个封装起来,并且使它们可互相转换。 本模式可独立于使用它的客户而变化。 角色: 抽象策略(Strategy) 具体策略(ConcreteStrategy) 上下文(Context) 优点: 定义一系列可重用的算法和行为 消除了一些条件语句 可以提供相同行为的不同实 阅读全文

posted @ 2023-02-01 14:12 夜黎i 阅读(12) 评论(0) 推荐(0)

观察者模式

摘要: 内容: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。 观察者模式又称“发布-订阅”模式 角色: 抽象主题(Subject) 具体主题(ConcreteSubject) ——发布者 抽象观察者(Observer) 具体观察者(Concret 阅读全文

posted @ 2023-02-01 14:11 夜黎i 阅读(41) 评论(0) 推荐(0)

责任链模式

摘要: 内容: 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。 将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 角色: 抽象处理者(Handler) 具体处理者(ConcreteHandler) 客户端(Client) 适用场景: 有多个对象可以处理一个请 阅读全文

posted @ 2023-02-01 14:10 夜黎i 阅读(16) 评论(0) 推荐(0)

代理模式

摘要: 内容: 为其他对象提供一种代理以控制对这个对象的访问 应用场景: 远程代理:为远程对象提供代理 虚代理:根据需要创建很大的对象 保护代理:控制对原始对象的访问,用于对象有不同访问权限时 角色: 抽象实体(Subject) 实体(RealSubject) 代理(Proxy) 优点: 远程代理:可以隐藏 阅读全文

posted @ 2023-02-01 14:08 夜黎i 阅读(15) 评论(0) 推荐(0)

外观模式

摘要: 内容:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口, 这个接口使得这一子系统更加容易使用 角色: 外观(facade) 子系统类(subsystem classes) 优点: 减少系统相互依赖 提高了灵活性 提高了安全性 查看代码 class CPU: def run(self 阅读全文

posted @ 2023-02-01 14:07 夜黎i 阅读(14) 评论(0) 推荐(0)

组合模式

摘要: 内容: 将对象组合成树形结构以表示“部分-整体”的层次结构。 组合模式使得用户对单个对象和组合对象的使用具有一致性 角色: 抽象组件(Component) 叶子组件(Leaf) 复合组件(Composite) 客户端(Client) 适用场景: 表示对象的”部分-整体“层次结构(特别是结构是递归的) 阅读全文

posted @ 2023-02-01 14:06 夜黎i 阅读(20) 评论(0) 推荐(0)

桥模式

摘要: 内容: 将一个事物的两个维度分离,使其都可以独立地变化 角色: 抽象(Abstraction) 细化抽象(RefinedAbstraction) 实现者(Implementor) 具体实现者(ConcreteImplementor) 应用场景: 当事物有两个维度上的表现,两个维度都有可能扩展时 优点 阅读全文

posted @ 2023-02-01 14:04 夜黎i 阅读(74) 评论(0) 推荐(0)

适配器模式

摘要: 内容:将一个类的接口转换成客户希望的另一个接口。 适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作了。 两种实现方式: 类适配器:使用多继承 对象适配器:使用组合 角色: 目标接口(Target) 待适配的类(Adaptee) 适配器(Adapter) 适用场景: 想使用一个已经存 阅读全文

posted @ 2023-02-01 14:03 夜黎i 阅读(19) 评论(0) 推荐(0)

单例模式

摘要: 内容:保证一个类只有一个实例,并提供一个访问它的全局访问点 角色: 单例(Singleton) 优点: 对唯一实例的受控访问 单例相当于全局变量,但防止了命名空间被污染 查看代码 class Singleton: """通过重写new方法,确保每次实例化只有一个实例对象 nwe方法在init之前调用 阅读全文

posted @ 2023-02-01 14:02 夜黎i 阅读(13) 评论(0) 推荐(0)

建造者模式

摘要: 内容:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 角色: 抽象建造者(Builder) 具体建造者(Concrete Builder) 指挥者(Director) 产品(Product) 建造者模式与抽象工厂模式相似,也用来创建复杂对象,主要区别是建造者模式着重一步步 阅读全文

posted @ 2023-02-01 14:00 夜黎i 阅读(23) 评论(0) 推荐(0)

抽象工厂模式

摘要: 内容:定义一个工厂类接口,让工厂子类来创建一系列相关或互相依赖的对象。 列: 生产一部手机,需要手机壳、CPU、操作系统三类对象进行组装,其中每类对象都有不同的种类。 对每个具体工厂,分别生产一部手机所需要的三个对象。 相比工厂方法模式,抽象工厂模式中的每个具体工厂都生产一套产品。 角色: 抽象工厂 阅读全文

posted @ 2023-02-01 13:57 夜黎i 阅读(19) 评论(0) 推荐(0)

工厂方法模式

摘要: 内容:定义一个用于创建对象的接口(工厂接口),让子类决定实列化哪个一个产品类。 角色: 抽象工厂角色(Creator) 具体工厂角色(Concrete Creator) 抽象产品角色(Product) 具体产品角色(Concrete Product) 优点: 每个具体产品都对应一个具体工厂类,不需要 阅读全文

posted @ 2023-02-01 13:55 夜黎i 阅读(12) 评论(0) 推荐(0)

面向对象设计SOLID原则

摘要: 1.开放封闭原则:一个软件实体如类,模块和函数应该对扩展开放,对修改关闭。 即软件实体应尽量在不修改原有代码的情况下进行扩展。 2.里氏替换原则:所有引用父类的地方必须能透明地使用其子类的对象。 3.依赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象; 抽象不应该依赖细节,细节依赖抽象。 阅读全文

posted @ 2023-02-01 13:53 夜黎i 阅读(32) 评论(0) 推荐(0)

Python-接口

摘要: from abc import ABCMeta, abstractmethod # 接口:若干抽象方法的集合 class Paymet(metaclass=ABCMeta): # abstractmethod class # 抽象方法 @abstractmethod def pay(self, mo 阅读全文

posted @ 2023-02-01 13:51 夜黎i 阅读(25) 评论(0) 推荐(0)

Mysql-自连接

摘要: -- 自连接 -- 表自己与自己连接 select a.* from areas as a inner join areas as c on a.pid=c.aid where c.atitle="湖北省"; 表取自: Mysql-几张供于学习的表 - 夜黎i - 博客园 (cnblogs.com) 阅读全文

posted @ 2023-02-01 13:34 夜黎i 阅读(20) 评论(0) 推荐(0)

Mysql-子查询

摘要: -- 子查询 -- 标量子查询:子查询返回的结果是一个数据(一行一列) -- 列子查询:返回的结果是一列(一列多行) -- 行子查询:返回的结果是一行(一行多列) -- 查询出高于平均身高的信息(high) -- 1.查出平均身高 select avg(high) from student; -- 阅读全文

posted @ 2023-02-01 13:33 夜黎i 阅读(30) 评论(0) 推荐(0)

Mysql-外连接

摘要: -- 左连接:主表 left join 从表 on 连接条件; -- left join -- 查询每位学生对应的班级信息 select * from student inner join classess on student.cls_id=classess.id; select * from s 阅读全文

posted @ 2023-02-01 13:32 夜黎i 阅读(21) 评论(0) 推荐(0)

Mysql-条件查询

摘要: -- 条件查询 -- 比较运算符 -- select …… from 表名 where …… -- > -- 查询身高大于180的信息 select * from student where high>180.00; -- < -- 查询身高小于180的信息 select * from studen 阅读全文

posted @ 2023-02-01 13:30 夜黎i 阅读(27) 评论(0) 推荐(0)

Mysql-排序查询

摘要: -- 排序 -- order by 字段 -- asc 从小到大排序,即升序 -- desc 从大到小排序,即降序 -- 查询年龄在18到34岁之间的男性,按照年龄从小到大排序(默认是asc升序)、 select * from student where (age between 18 and 34 阅读全文

posted @ 2023-02-01 13:29 夜黎i 阅读(65) 评论(0) 推荐(0)

Mysql-内连接

摘要: -- 连接查询 -- inner join ... on -- select ... from 表A inner join 表B; select * from student inner join classess; -- 查询 有能够对应班级的学生以及班级信息 select * from stud 阅读全文

posted @ 2023-02-01 13:28 夜黎i 阅读(28) 评论(0) 推荐(0)

Mysql-模糊查询

摘要: -- 模糊查询(where name like 要查询的数据) -- like -- % 替换任意个 -- _ 替换1个 -- 查询名字中 以“凌”开始的名字 select * from student where name like "凌%"; -- 查询姓名中 有“万”所有的名字 select 阅读全文

posted @ 2023-02-01 13:27 夜黎i 阅读(40) 评论(0) 推荐(0)

Mysql-几张供于学习的表

摘要: CREATE TABLE `student` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(30) NOT NULL, `high` decimal(5,2) DEFAULT NULL, `gender` enum(' 阅读全文

posted @ 2023-02-01 11:32 夜黎i 阅读(44) 评论(0) 推荐(0)

Mysql-聚合函数

摘要: -- 聚合函数 -- 总数 -- count -- 查询男性多少人 select count(*) from student where gender=1; -- 最大值 -- max -- 查询最大的年龄 select max(age) from student; -- 查询女性的最高身高 sel 阅读全文

posted @ 2023-02-01 11:25 夜黎i 阅读(40) 评论(0) 推荐(0)

Mysql-分组查询

摘要: -- 分组 -- group by -- 按照性别分组,查询所有的性别 -- 按照字段分组,就可以直接查询什么字段 select gender from student group by gender; -- 计算每种性别中的人数 select gender,count(0) from studen 阅读全文

posted @ 2023-02-01 11:24 夜黎i 阅读(84) 评论(0) 推荐(0)

Mysql-分页查询

摘要: -- limit start, count -- start:(页数-1)*每一页的数量 -- 限制查询出来的数据个数 -- 查询前5个数据 select * from student limit 5; -- 每页显示2个,第一个页面 select * from student limit 0,2; 阅读全文

posted @ 2023-02-01 11:22 夜黎i 阅读(28) 评论(0) 推荐(0)

Mysql-范围查询

摘要: -- 范围查询 -- in(1,3,8)表示再一个非连续的范围内 -- 查询 年龄为18,20的姓名 select name from student where age=18 or age=20; select name from student where age in(18,20); -- n 阅读全文

posted @ 2023-02-01 11:21 夜黎i 阅读(84) 评论(0) 推荐(0)

Mysql-update修改数据

摘要: -- 修改 -- update 表名 set 列1=值1, 列2=值2... where 条件; -- 全部修改 update student set cls_id=666; -- 按条件修改 update student set high=188.88 where id=1; 表取自: Mysql 阅读全文

posted @ 2023-02-01 11:20 夜黎i 阅读(35) 评论(0) 推荐(0)

Mysql-table数据表操作

摘要: -- 查看当前数据库中的所有表 show tables; -- 创建表(字段后必须先写数据类型再写约束 数据类型必须有 约束可有可无,根据情况而定) -- int unsigned 无符号整形 -- auto_increment 表示自动增长 -- not null 表示不能为空 -- primar 阅读全文

posted @ 2023-02-01 11:19 夜黎i 阅读(34) 评论(0) 推荐(0)

Mysql-select查询数据

摘要: -- 查询所有列 -- select * from 表名 select * from student; -- 指定条件查询 select * from student where id=4; -- 查询指定列 -- select 列1,列2,…… from 表名 select name,high f 阅读全文

posted @ 2023-02-01 11:17 夜黎i 阅读(24) 评论(0) 推荐(0)

Mysql-delete删除数据

摘要: -- 删除 -- 物理删除 -- delete from 表名 where 条件 delete from student where id=4; -- 逻辑删除 -- 用一个字段来表示,这条信息是否已经不能再使用了 -- 给student表添加一个 is_delete 字段 bit类型 alter 阅读全文

posted @ 2023-02-01 11:16 夜黎i 阅读(195) 评论(0) 推荐(0)

Mysql-databa数据库操作

摘要: -- 连接数据库 -- mysql -uroot -p -- 退出数据库 -- quit/ctrl+d/exit -- 显示数据库版本 select version(); -- 显示时间 select now(); -- 查看当前使用的数据库 select database(); -- 查看所有的数 阅读全文

posted @ 2023-02-01 11:14 夜黎i 阅读(31) 评论(0) 推荐(0)

Mysql-alter修改字段

摘要: -- alter table 表名 add 列名 类型; alter table classess add jixiangwu varchar(30); -- 修改表-修改字段:不重命名版 -- alter table 表名 modify 列名 类型及约束; alter table classess 阅读全文

posted @ 2023-02-01 11:13 夜黎i 阅读(37) 评论(0) 推荐(0)

Mysql-insert插入数据

摘要: -- 增加 -- 全列插入 -- insert [into] 表名 values(...) -- 主键字段 可以用 0 null default 来占位 insert into classess values(0,"python1"); -- 向students表插入 一个学生信息 insert i 阅读全文

posted @ 2023-02-01 11:11 夜黎i 阅读(49) 评论(0) 推荐(0)

Mysql最基本的查看操作

摘要: 1.在终端中查看mysql数据库 show databases; 2.进入想操作的数据库 use 数据库名; 注:显示 Database changed 即为进入成功。 3.查看数据库中的所有表 show tables; 4.查看表结构 describe(或简写desc)表名; 阅读全文

posted @ 2023-02-01 10:57 夜黎i 阅读(122) 评论(0) 推荐(0)

微信小程序报错-msgForConsole: 'Error -1: ./pages/newsDetail/newsDetail.wxml:11:15: unexpected character `"`\r\n'

摘要: 下图高亮的这部分报错,意思是: 你在代码行数,11~15行之间,有地方写错标点符号,需要将其改正,才能执行 注意仔细检查…… 阅读全文

posted @ 2023-02-01 10:08 夜黎i 阅读(232) 评论(0) 推荐(0)

导航