二分查找 二分查找又叫折半查找,是在有序列表的基础上进行查找,每次查找可以筛掉一半的元素。 算法步骤 以升序数列$L[0…n-1]$为例,假设要查找的数为$x$: 让$x$与数列中间位置的元素$L[\lfloor \frac n2 \rfloor]$进行比较,如果相等则返回该元素下标,否则: 如果$x$比中间元素小,递归地对中间元素左边的数列(比二分查找小的元素)进行二分查找; 如果$x$比中间元素大,递归地对中间元素右边的数列(比二分查找大的元素)进行二分查找。 代码实现 Python实现 递归实现: 1def BinarySearch(arr, target, left = 0, right = 0): 2 """二分排序(递...

Ubuntu MySQL 8 安装: 首先更新本地存储库索引: 1sudo apt update 从 APT 存储库安装 MySQL: 1sudo apt install MySQL-server -y 查看 MySQL 版本,验证是否安装成功: 1mysql --version 检查 MySQL 是否正在运行: 1systemctl status mysql.service 如果服务未运行: 1sudo systemctl start mysql MySQL 安装完成后需要更改密码。 查看默认账户和密码: 执行后找到 user 和 password,如: 1sudo vim /etc/mysql/debian.cnf 或:...

oh-my-zsh主页: https://ohmyz.sh/ 安装并设置zsh 安装zsh: 1sudo apt install zsh 查看系统中所有的shell: 1cat /etc/shells 1# /etc/shells: valid login shells 2/bin/sh 3/bin/bash 4/usr/bin/bash 5/bin/rbash 6/usr/bin/rbash 7/bin/dash 8/usr/bin/dash 9/usr/bin/tmux 10/usr/bin/screen 11/bin/zsh 12/usr/bin/zsh 将zsh设置为默认的shell: 1sudo chsh -s...

命题的定义 具有确切真值的陈述句称为命题(proposition)。命题可以取一个 “值”,称为真值。真值只有 “真”(用 “T” or “1” 表示,即 True)和 “假”(用 “F” or “0” 表示,即 False)。 通常用带或不带下标的大写英文字母表示命题。 非命题 一切没有判断内容的句子,如命令句(祈使句)、感叹句、疑问句、二义性的陈述句等都不能作为命题。 原子命题与复合命题 原子命题(简单命题):不能再分解为更简单命题的命题。 复合命题:可以分解为更为简单命题的命题。这些简单命题之间是通过联结词和标点符号复合而成。 命题变元 一个特定的命题是一个常值命题,它不是具有值 “T”,就是具有值 “F”。 一个任意的没有...

经典字符串匹配 BF暴力匹配算法 暴力匹配,即Brute Force,简称BF算法。BF算法是一种简单朴素的模式匹配算法,常用于在一个主串S内查找一个子串T的出现位置。 算法步骤 假设有主串S与子串P,主串S的长度为N,子串T的长度为M。 将S和T左对齐,并比较其第一个元素。 若匹配,则继续比较下一个元素,一直到第M个元素。 若不匹配则T向右移动一个位置。 接着根据步骤3和4进行比较,直到匹配到或者T移动了N-M且仍未匹配到。 代码实现 Python实现 实现1: 1def BFMatch(s, p): 2 if len(s) < len(p): 3 return -1 4 i, j = 0, 0 5 # 匹配阶段 6 while...

临时变量 通过建立一个临时变量来实现两数交换: 1def swap(x, y): 2 print(x, y) 3 tmp = x 4 x = y 5 y = tmp 6 print(x, y) 7 return x, y 8 9if __name__ == '__main__': 10 swap(1, 2) 缺点: 需要消耗额外的内存。 优点: 不限制类型,大多数类型都能使用该操作。 加减交换 通过加减法实现: 1def swap(x, y): 2 print(x, y) 3 x = x + y 4 y = x - y 5 x = x - y 6 print(x, y) 7 return x, y 8 9if __name__...

Python 语法 注释 Python 的注释风格: 1# 行注释 2 3''' 4块注释1 5''' 6 7""" 8块注释2 9""" 注释中的内容将不会被执行。 标识符 首字母必须是大写或小写的英文字母或者下划线 _。 其他部分由大写或小写的英文字母、数字和下划线组成。 大小写敏感(区分大小写)。 Python3 中允许使用非 ASCII 标识符,即中文也可作为标识符: 1>>> 变量 = 5 2>>> print(变量) 35 关键字 Python 关键字(keyword)不能作为标识符使用,关键字又称保留字。 使用 keyword 模块输出 Python 的所有关键字: 1>>> import keyword 2>>>...

正则表达式语法 —— Python 正则表达式是一个特殊的字符序列,能方便地检查一个字符串是否与某种模式匹配。 正则表达式可以拼接。 正则表达式可以包含普通或者特殊字符。 绝大部分普通字符,是最简单的正则表达式。它们就匹配自身。 特殊字符既可以表示它的普通含义, 也可以影响它旁边的正则表达式的解释。 重复修饰符(*、+、?、{m,n}, 等)不能直接嵌套。避免了非贪婪后缀 ? 修饰符,和其他实现中的修饰符产生的多义性。要应用一个内层重复嵌套,可以使用括号。 特殊字符 序列 说明 . (点)在默认模式,匹配除了换行的任意字符。 如果指定了标签 DOTALL,它将匹配包括换行符的任意字符。 \ 转义特殊字符(允许你匹配...

假设有三个 bat 程序需要后台运行(称为 A.bat、B.bat、C.bat): 1Set ws = CreateObject("Wscript.Shell") 2ws.run "cmd /c A.bat",0 3ws.run "cmd /c B.bat",0 4ws.run "cmd /c C.bat",0

冒泡排序 冒泡排序(Bubble Sort)是一种简单直观的排序算法。 这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 时间复杂度:$O(n^2)$ 算法步骤 假设一个序列长度为n,m(m≤n)是已排序完成的在末尾的数。 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。对比结束后,最后的元素会是最大的数。 对接下来n-m个未排序的数重复步骤1和2,直到没有任何一对数字需要比较。 第一趟对序列中所有n个数进行比对,第二趟对序列中n-1个未排序完成的数进行比对,以此类推。每次比对的数为n-m。 动画演示: 代码实现 Python实现 1def...