### for 循环语句 ``` for i in range(5): #[1,5) print(i) ``` ``` for i in range(-10,-100,-30): #步长-30 print(i) # >> -10 -40 -70(每个数单独一行) ``` ``` for i in range(0) print(i) #>> 无输出 ``` ``` for i in range(2,2) print(i) #>> 无输出 ``` (注意 `:`,print 前有四个空格) ### for 循环遍历列表 #### 写法一 ``` a = ['vx','QQ','YEB'] for i in range(len(a)):# len 求列表长度(元素个数) print(i,a[i]) #>>0 vx #1 QQ #2 YEB ``` - len 也可以用来求字符串长度,元组、集合、字典元素个数 ``` print(len("abc")) #>>3 ``` #### 写法二 ``` a = ['vx','QQ','YEB'] for i in a: print(i) #>>vx
### WePlanet (Desktop) - 🚀适用于小型团体的协作系统 交流、工作、活动、分析、管理、审批...等的功能均集成于简约轻便的 **WePlanet(Desktop)**。 - 平台:Windows x64 - 开发环境:Visual Studio 2022 - 数据库:MySQL - 语言:C++ 11 - 框架:Qt5.15.x ### 开发进度 **已完成:** * [x] 用户系统 * [x] 考勤系统 * [x] 个人管理 * [x] 用户管理 * [x] 版本公告 * [x] 活动系统 * [x] 权限系统 * [x] 组织架构 * [x] Markdown 通知动态 * [x] 数据图表 * [x] 数据导出 * [x] 自动更新 * [x] 登录检测 * [x] ECharts 数据大屏 * [x] 认证系统 * [x] 好友系统(测试版) * [x] 审批系统 * [x] 审批流程设计 **开发计划:** * [ ] 积分商城 * [ ] 更多... ### 开发进度截图 $ 空间复杂度:$O(1)$ **堆排序时间复杂度:** 一个节点每下降一层,最多只需要比较两次关键字。若树高度为 $h$,某节点在第 $i$ 层,则将这个节点向下调整最多只需要下降 $h-i$ 层,那么对比次数不超过 ${2}(h-i)$,$n$ 个节点的完全二叉树树高 $h = \left\lfloor {{{\log }_2}n} \right\rfloor + 1$。 将整棵树调整为大根堆,关键字比较次数不超过: $$ \sum\limits_{{\rm{i}} = h - 1}^1 {{2^{i - 1}}2(h - i) = } \sum\limits_{{\rm{i}} = h - 1}^1 {{2^i}(h - i) = } \sum
最近在全面学习数据结构,常用算法记录:希尔排序,基本思想是选定一个增量 $d using namespace std; void shellSort(int arr[], int n); int main() { int arr[] = {-1, 5, 7, 12, 6, 2, 0, 8, 15, 1, 11}; int length = (int)(sizeof(arr) / sizeof(int)); //数组长度 shellSort(arr, length); for (int i = 1; i < length; i++) cout << arr[i] << " "; return 0; } void shellSort(int arr[], int n) { int d, i, j; //arr[0]为暂存单元 for (d = n / 2; d > 0; d /= 2) //d为步长 { for (i = d + 1; i <= n; i++) //从子表中第二个元素开始 if(arr[i] < arr[i - d]) //小于子序列前一项 { arr[0] = arr[i
最近在全面学习数据结构,常用算法记录:插入排序,基本思想是将待排序的记录按其关键字的大小逐个插入到一个有序序列(通常为左半部分),直到所有记录插入完成,是一种**稳定**排序。 空间复杂度:$O(1)$ 平均时间复杂度:$O(n^2)$ ```cpp #include using namespace std; //直接插入排序(含哨兵)优点:不用判断j>=0,哨兵即为循环结束标志 void insertSort_1(int arr[], int n); //直接插入排序(不含哨兵) void insertSort_2(int arr[], int n); //折半(二分)插入排序 对直接插入排序的优化 void insertSort_3(int arr[], int n); int main() { int arr[] = {-1, 5, 7, 12, 6, 2, 0, 8, 15, 1, 11}, arr_2[] = {-1, 5, 7, 12, 6, 2, 0, 8, 15, 1, 11}, arr_normal[] = {5, 7, 12, 6, 2, 0, 8, 15, 1,
最近在全面学习数据结构,常用算法记录:快速排序,即交换排序的一种,是对冒泡排序的一种改进,是一种**不稳定**排序。 平均时间复杂度:$O(nlogn)$ 最坏时间复杂度(退化至冒泡排序):$O(n^2)$ ```cpp #include using namespace std; //快速排序 void quickSort(int arr[], int low, int high); void quickSort_another(int *arr, int left, int right); //划分函数 int partition(int arr[], int low, int high); int main() { int arr[] = {5, 2, 4, 6, 1, 3}; quickSort(arr, 0, 5); for(auto cur:arr) cout << cur << " "; cout << endl; quickSort_another(arr, 0, 5); for(auto cur:arr) cout << cur << " "; return 0; }
### 算法运算 `/` `+` `-` `*` (结果均为小数,) `%`(取余) `//`(求商,往小取整) `**`(求幂) + 有小数的算术表达式,结果就是小数(除非经过其他转换) ### 算术优先级 1. ** 2. \* / // % 3. \+ - (多用 `()`可取代优先级) ### 算术运算的同时赋值 `+=` 实际意义: a+=s 即 a=a+s (数学符号不可乱用于此) ### 关系运算符 `!=` ` ==` `>` `<>=` `<=` (可用于字符串比较) ### 逻辑运算符及表达式 #### 逻辑运算符 `and` `or` `not` 三种 操作结果 `True`/`False` 1. 和 `and` ``` n = 4 n >= 2 and n < 5 #>>Ture print(4 and True) #>>Ture ``` + 0,"",[] 都相当于 false(但不等于 false) + 非 0 的数,非空的字符串和非空列表都相当于 Ture + Ture 可以看作 1,False 可以看作 0 2. 或 `or` + 只要有一个为 True
## 第一章 初步认识 ### 符号 + 均为英文(除非输出为中文字符) ### 注释(方便理解) #### 单行注释 + `#`开头 #### 多行注释 + `Ctrl`+`/`(选中多行文字添加或取消注释) ### 变量(存储数据) + 命名:大小写字母、数字和下划线构成,中间不能有空格,长度不限,不能以数字开头。(py 预留的不可做变量名字) **注意:** 变量名大小可代表不同变量,不可混为一谈 ### 赋值语句(变量 = 表达式) ```python a = "he" print(a) # >>he(输出为he) ``` __注意:__ 程序从上到下顺序执行 ``` a,b = "12" print(a,b) # >>he 12 a,b=b,a #交换 a,b的值 print(a,b) # >>12 he ``` __注意:__ py 语句前不能随便加空格 ### 字符串 - 必须用单引号、双引号或三引号括起来 ```python x = "I said:'hello'" print(x) # >>I said:'hello' ``` __注意:__ 字符串里面不会包含变量且