数据结构与算法- 基础理念

简介: 空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度,用S(n)=O(f(n))

时间复杂度

  • T(n)=O(f(n))通过模拟的场景来反映算法实际运算时的速度,不同T(n)在不同的状态下表现的速度也不一样,比如算法A为O(100n)与算法B为O(5n*2),当n小时算法B快,当n大时算法A快。这就是时间复杂度带来的差异
  • 常见的时间复杂度O(1)<O(logn)<O(n)<O(nlonn)<O(n*2)

空间复杂度

  • 空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度,用S(n)=O(f(n))
  • 常见的空间复杂度O(1)<O(n)<o(n*2)

什么是数组

  • 数组是由有限个相同类型的变量所组成的有序集合,数组的物理储存方式是顺序存储,访问方式是随机访问。利用下标查找元素的时间复杂度是O(1),中间插入和删除数组元素的时间复杂度是O(n)。

什么是链表

链表是一钟链式的数据结构,由若干个节点组成,每个节点包含指向下一个节点的指针。链表的物理储存方式是随机存储,访问方式是顺序访问。查找链表的节点时间复杂度是O(n),中间插入和删除节点的时间复杂度是O(1)。

什么是栈

栈是一种线性逻辑结构,可以用数组实现,也可以用链表实现。栈包含入栈和出栈操作,遵循先入后出的原则(FILO)。

什么是队列

队列也是一种线性逻辑结构,可以用数组实现,也可以用链表实现。包含入队和出队操作,遵循先入先出的原则(FIFO)。

什么是散列表

  • 散列表也叫哈希表,是存储Key-Value映射的集合。对于某一个Key,散列表可以在接近O(1)的时间内进行读写操作。散列表通过哈希函数实现Key和数组下标的转换。
  • 解决哈希冲突的2种方法
  1. 开放寻址法:当准备插入的下标下已有值,则通过向右移动来寻找空的值这只是其中一种方法,在Java中有ThreadLocal用的就开放寻址法解决哈希冲突
  2. 链表法:这种方法在HashMap中,当插入的下标中已有值,则通过next指针指向同下标一个新的值,通过这个链表,当查找时,先找到下标再通过一层一层的指针来查找所需所需元素
相关文章
|
人工智能 算法
【聚能聊有奖话题】今日头条公布算法原理,你认可他们的理念吗?
11 日,今日头条召开了一场旨在推动整个行业来问诊算法、建言算法的分享交流会。资深算法架构师、中国科学技术大学计算机博士曹欢欢,在今日头条总部带来了题为《让算法公开透明》的分享,面向行业公开算法原理,消除社会各界对算法的一些误解,同时接受意见和建议。
2449 0
|
12天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。
|
18天前
|
机器学习/深度学习 算法 Serverless
基于WOA-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目利用鲸鱼优化算法(WOA)优化支持向量机(SVM)参数,针对乳腺癌早期诊断问题,通过MATLAB 2022a实现。核心代码包括参数初始化、目标函数计算、位置更新等步骤,并附有详细中文注释及操作视频。实验结果显示,WOA-SVM在提高分类精度和泛化能力方面表现出色,为乳腺癌的早期诊断提供了有效的技术支持。
|
6天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
6天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如&quot;How are you&quot;、&quot;I am fine&quot;、&quot;I love you&quot;等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
14天前
|
算法
基于GA遗传算法的PID控制器参数优化matlab建模与仿真
本项目基于遗传算法(GA)优化PID控制器参数,通过空间状态方程构建控制对象,自定义GA的选择、交叉、变异过程,以提高PID控制性能。与使用通用GA工具箱相比,此方法更灵活、针对性强。MATLAB2022A环境下测试,展示了GA优化前后PID控制效果的显著差异。核心代码实现了遗传算法的迭代优化过程,最终通过适应度函数评估并选择了最优PID参数,显著提升了系统响应速度和稳定性。
|
11天前
|
算法
基于WOA鲸鱼优化的购售电收益与风险评估算法matlab仿真
本研究提出了一种基于鲸鱼优化算法(WOA)的购售电收益与风险评估算法。通过将售电公司购售电收益风险计算公式作为WOA的目标函数,经过迭代优化计算出最优购电策略。实验结果表明,在迭代次数超过10次后,风险价值收益优化值达到1715.1万元的最大值。WOA还确定了中长期市场、现货市场及可再生能源等不同市场的最优购电量,验证了算法的有效性。核心程序使用MATLAB2022a实现,通过多次迭代优化,实现了售电公司收益最大化和风险最小化的目标。
|
15天前
|
算法
通过matlab分别对比PSO,反向学习PSO,多策略改进反向学习PSO三种优化算法
本项目使用MATLAB2022A版本,对比分析了PSO、反向学习PSO及多策略改进反向学习PSO三种优化算法的性能,主要通过优化收敛曲线进行直观展示。核心代码实现了标准PSO算法流程,加入反向学习机制及多种改进策略,以提升算法跳出局部最优的能力,增强全局搜索效率。
|
9天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。