- 博客(48)
- 收藏
- 关注
原创 快速排序算法
快速排序(quick sort)是一种基于分治策略的排序算法,运行高效,应用广泛。快速排序的核心操作是“哨兵划分”,其目标是:选择数组中的某个元素作为“基准数”,将所有小于基准数 的元素移到其左侧,而大于基准数的元素移到其右侧。1. 选取数组最左端元素作为基准数,初始化两个指针 i 和 j 分别指向数组的两端。2. 设置一个循环,在每轮中使用 i(j)分别寻找第一个比基准数大(小)的元素,然后交换这两个元素。3. 循环执行步骤 2. ,直到 i 和 j 相遇时停止,最后将基准数交换至两个子数组的分界线。
2024-12-07 23:03:39 547
原创 Mysql外键约束与关联表操作
添加数据确保先添加主表(customers)中的数据,然后再在子表(orders)中添加数据,使用主表的主键作为外键。更新数据可以直接更新主表或子表中的数据。若更新主表中的主键,并且设置了,子表中的外键也会自动更新。删除数据删除主表中的记录时,若设置了,相关的子表记录会被自动删除。否则,若子表中有相关记录,删除操作将会失败。完整示例:-- 1. 添加客户-- 2. 添加订单-- 3. 更新客户的电子邮件-- 4. 更新订单的日期-- 5. 删除客户(相关的订单将被自动删除)
2024-12-03 21:50:19 691 3
原创 C之易错点
*注意**:使用`sizeof`时,数组的大小与指针的大小不同,确保使用时注意上下文。**问题**:在处理字符串时,如果没有给字符串添加结束符`\0`,可能导致内存溢出。**问题**:使用未初始化的变量时,它的值是不可预测的,可能导致程序错误。**问题**:在条件判断中,使用`=`代替`==`会导致逻辑错误。**问题**:使用`sizeof`时未正确使用括号,导致意外结果。
2024-09-25 23:59:39 857 10
原创 C语言指针简介篇
指针的定义: 定义一个指针时,需要指定它所指向的数据类型。int *ptr;// ptr是一个指向整数的指针指针的初始化: 指针在使用之前需要被初始化。int x = 10;// ptr现在指向x的地址二级指针:指向指针的指针,常用于动态分配多维数组。指针数组:存储指针的数组,每个元素都是一个指针,适合处理多个指针。数组指针:指向数组的指针,便于在函数中传递整个数组。
2024-09-24 21:22:17 1341 12
原创 C语言之switch-case语句
不要拿青龙偃月刀去削苹果 那你既然有了菜刀为什么还需要水果刀呢?一把好刀是一个厨子的很重要的东西,而在做菜时不可能只有一把刀,有的刀适合切菜,有的刀适合剁肉,有的刀适合剔骨......if、else 一般表示两个分支或是嵌套表示少量的分支,但如果分支很多的话……还是用 switch、case 组合吧。
2024-09-23 13:20:20 2392 14
原创 C语言实现常见的数据结构
如果需要对B树进行更复杂的操作(如删除节点),可以继续扩展此基础实现。B树广泛用于数据库索引和文件系统管理,非常适合处理大规模数据。插入了几个键后,树中将进行自动分裂和调整以保持B树的平衡特性。: 在B树中搜索一个键,找到则返回包含该键的节点,否则返回。函数可以在B树中搜索某个键并返回结果。: 中序遍历B树,输出所有节点的键。: 向一个非满节点插入一个键。: 分裂一个满节点为两个节点。: 插入一个新的键到B树中。: 创建一个新的B树节点。函数将打印B树中的所有键。
2024-09-22 09:59:47 698 5
原创 C语言中if else组合
扩展一下,把 0.0 替换为你想 比较的任何一个浮点数,那我们就可以比较任意两个浮点数的大小了,前提是在某个精度内比较。注意选择一个适当的误差范围取决于你的具体需求和浮点数的精度要求。
2024-09-21 17:57:28 1199 6
原创 C语言中易混淆概念的关键字
想要使用就得在前面再加 extern ***。想要使用方便, 直接在文件顶端定义不就得了。静态局部变量,在函数体里面定义的,就只能在这个函数里用了,同一个文档中的其他 函数也用不了。
2024-09-21 10:38:53 1620 5
原创 决策树算法中篇
还是举例说明,假设 Dammi 在买衣服的时候有颜色,尺寸,款式以及设计年份四种要求,而 Sara 只有颜色和尺寸的要求,那么在购买衣服这个层面上 Dammi 由于选择更多因而不确定性因素更大,最终 Dammi所获取的信息更多,也就是熵更大。对于取值多的属性,尤其一些连续型数值,这个单独的属性就可以划分所有的样本,使得所有分支下的样本集合都是“纯的”(最极端的情况是每个叶子节点只有一个样本)。一个属性的信息增益越大,表明属性对样本的熵减少的能力更强,这个属性使得数据由不确定性变成确定性的能力越强。
2024-09-20 22:30:16 1445 5
原创 决策树算法上篇
决策树是属于有监督机器学习的一种,起源非常早,符合直觉并且非常直观,模仿人类做决策的过程,早期人工智能模型中有很多应用,现在更多的是使用基于决策树的一些集成学习的算法。
2024-09-13 10:58:40 971 2
原创 动态规划问题
你需要从矩阵的左上角 (0,0) 开始,移动到右下角 (m-1,n-1),每次只能向右或向下移动一步,计算从左上角到右下角的最小路径和。给定两个字符串,求将一个字符串转换成另一个字符串所需的最少操作数(插入、删除、替换)。最优路径是:1 → 3 → 1 → 1 → 1,总路径和为 7。给定一个背包的容量和一组物品的重量及价值,求最大总价值。给定一个整数数组,找到其中最长递增子序列的长度。给定一个整数数组,找出具有最大和的连续子数组。个元素结尾的最长递增子序列的长度。给定一个字符串,找出最长的回文子串。
2024-09-11 10:38:29 877 1
原创 利用鸢尾花数据集介绍PCA算法
主成分分析(PCA, Principal Component Analysis)是一种常用的数据降维技术,它可以将高维数据转换为较低维数据,同时尽可能保留数据的主要信息。PCA通过寻找数据的主要方向,即方差最大的方向,来完成降维。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。
2024-09-10 13:12:20 1225
原创 K-Means聚类
使用sklearn可以快速实现 K-Means 算法,适合开发中快速调用。手动实现可以帮助我们理解 K-Means 算法的内部工作机制,例如如何更新簇中心、如何分配数据点等。通过手动实现,我们也可以更容易地修改算法,尝试改进或扩展 K-Means。K-Means 是一种经典的聚类算法,适合处理数据量较大、簇形状为圆形或球形的场景。不过,K-Means 也有一定的局限性,例如它对簇的形状敏感,容易受到初始簇中心选择的影响。
2024-09-09 21:45:00 1252 1
原创 C++ 中的 vector 容器详解与应用示例
vector是一种动态数组,可以根据需要自动调整其大小。在添加或删除元素时,vector会自动分配和释放内存。vector作为 C++ 中最常用的容器之一,提供了灵活、高效的动态数组操作。它不仅可以自动管理内存,还支持随机访问、动态调整大小等功能。在实际开发中,我们应根据不同的应用场景选择合适的 STL 容器,vector适用于大多数需要动态数组的场景。通过上述的代码示例,大家可以更好地理解vector的基本操作和高级用法。在未来的开发中,熟练使用vector将显著提高代码的可维护性和性能。
2024-09-09 15:44:01 731
原创 C++中深拷贝与浅拷贝
一般情况下,浅拷贝没有任何副作用,但是当类中有指针,并且指针指向动态分配的内存空间,析构函数做了动态内存释放的处理,会导致内存问题。总结:如果属性有在堆区开辟的,一定要自己提供拷贝构造函数,防止浅拷贝带来的问题。
2024-09-08 19:51:34 551
原创 C++函数提高
在C++中,函数的形参列表中的形参是可以有默认值的。语法: 总结:1. 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值.2. 如果函数声明有默认值,函数实现的时候就不能有默认参数3调用函数时如果函数有默认参数则至少保留一个默认参数,func2(20,20)就没有保留一个默认参数会报错。如果函数的所有参数都是默认参数,则调用函数时可以直接函数名(),不用传参,如func2()。C++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置语法: 三、函数
2024-09-08 15:45:00 410
原创 虚析构和纯虚析构
1. 虚析构或纯虚析构就是用来解决通过父类指针释放子类对象2. 如果子类中没有堆区数据,可以不写为虚析构或纯虚析构3. 拥有纯虚析构函数的类也属于抽象类。
2024-09-05 12:30:00 280
原创 C语言小问题二(续上节)
编译器没有简单的好办法实现结构比较 (即, 支持结构的 == 操作符), 这也符合 C 的低层特性。也就是说, 第二种声明更像一种抽象类新用户不必知道它是一个结构, 而在声明它的实例时也不需要使用 struct 关键字。: 操作符, 跟多数操作符一样, 生成一个值, 而不能被赋值。根据 C 的内部类型转换规则, 乘法是用 int 进行的, 而其结果可能在转换为 long 型并赋给左边的 c 之前溢出或被截短。当两个整数做除法而结果赋与一个浮点变量时, 也有可能有同样类型的问题, 解决方法也是类似的。
2024-09-03 17:43:26 611
原创 C语言遇见的一些小问题
通过调试发现问题出在for循环后i此时为10,a[10]就已经数组越界了,因此a[i]是a[10]不是a[7],打印的a[i]是错误值。
2024-09-02 23:17:55 571
原创 安卓通讯录开发实验报告
1.实验报告要完整,即要有实验要求与目的、实验内容与步骤(必要流程图或活动图、代码)、运行结果与分析、实验体会与收获;2.代码要有必要的注释;3.标题为四号黑体,其他为宋体小四号,行间距为单倍行间距,纸张大小为A4;4.考核项目考核项目格式与完成性实验内容实验结果与分析实验体会与收获总成绩权重20%60%10%10%100%得分。
2024-09-01 08:00:00 1562
原创 爬楼梯问题
一次只能爬1阶或者2阶,那么请问有n阶楼梯会有多少种爬楼梯的方法/*爬楼梯3=1+1+1=1+2=2+1 3种 1+2=a+b=sum4=1+1+1+1=1+1+2=2+1+1=1+2+1=2+2 5种 1+3+1=3+2=b+a=sum3+b3 b3=25=1+1+1+1+1=1+1+1+2=1+1+2+1=1+2+1+1=2+1+1+1=2+1+2=2+2+1=1+2+2 8种 1+4+3=5+3=b+a=sum4+b4 b4=3。。。
2024-08-31 15:23:17 278
原创 基于sklearn库葡萄酒数据集的决策树回归分析
2)代码层次设计: 1:导入需要的算法库和模块;2:探索数据(查看数据特征、特征标签、特征名称、类标签名称…3:数据集分割(测试集、训练集);4:利用sklearn进行模型的实例化、训练、接口调用;1)问题分析:本问题的解决思路为先建立一棵决策树,再通过训练集和测试集准确性比较判断是否过拟合,若过拟合则通过entropy计算特征纯性找出最佳节点和最佳分支方法。得分每次运行得到的分数都是不一样的,因为他的训练集和测试集每次执行都是随机划分的,所以得到的结果必然不一样。探索特征名称和类名称数据分割。
2024-08-30 14:45:00 1111
原创 Python数据分析查询
1)问题分析: 查询借阅量最大的十本书需要先按照title进行分组,再使用。查询借阅量最大的十本书、查询被同一用户在一年中借阅多次的图书借阅情况。Pycharm3.11 Anaconda环境。查询被同一用户在一年中借阅多次的图书借阅情况。函数找出借阅量前十的书名和总借阅量,最后。)代码层次设计:根据上述思路,4)运行结果如图所示,结论为。进行分组并查询要求结果。查询借阅量最大的十本书。工程分为以下几个模块。
2024-08-30 12:57:17 728
原创 模仿网易音乐播放器
要求:1.实验报告要完整,即要有实验要求与目的、实验内容与步骤(必要流程图或活动图、代码)、运行结果与分析、实验体会与收获;2.代码要有必要的注释;3.标题为四号黑体,其他为宋体小四号,行间距为单倍行间距,纸张大小为A4;4.考核项目考核项目格式与完成性实验内容实验结果与分析实验体会与收获总成绩权重20%60%10%10%100%得分。
2024-08-30 11:57:43 1486
原创 海盗船--最优载问题
第1行输入T组测试数据,每组测试数据输入载重量 c 及古董个数 n,下1行输入每个古董的重量wi,用空格分开.每组能装入的古董最大数量。
2024-08-26 23:42:50 371
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人