当前位置: 首页 > news >正文

嵌入式Linux学习 - 数据结构6

五、哈希表

1. 哈希算法

将数据通过哈希算法映射成一个键值,存取都在同一位置实现数据的高效存储和查找

将时间复杂度尽可能降低至O(1)

2. 哈希碰撞

多个数据通过哈希算法得到的键值相同,称为产生哈希碰撞

3. 哈希表

构建哈希表存放0-100之间的数据

将0 - 100之间的数据的个位作为键值

4. 哈希表的相关操作

1. 插入元素

2. 遍历输出哈希表

3. 查找元素’

4. 销毁哈希表

主函数:

结果:

六、排序和查找算法

建立和输出被排序元素10000个

1. 冒泡排序

1. 时间复杂度为O(n^2)

2. 稳定的排序算法

3. 耗时:190 - 210ms

4. 运行原理:相邻的两个元素比较,大的向后走,小的向前走

2. 选择排序

1. 时间复杂度为O(n^2)

2. 不稳定的排序算法

3. 耗时:120 - 130ms

4. 运行原理:从前到后找最小值与前面的元素交换

3. 插入排序

1. 时间复杂度为O(n^2)。若数组有序,时间复杂度降低至O(n)

2. 稳定的排序算法

3. 耗时:70ms - 80ms

4. 运行原理

将数组中的每个元素插入到有序数列中

先将要插入的元素取出

依次和前面元素比较,比元素大的向后走,直到前一个元素比要插入的元素小,或者到达有序数列开头停止

最后插入被取出的元素

4. 希尔排序

1. 时间复杂度为O(nlogn)

2. 不稳定的排序算法

3. 耗时: 5 - 10ms

4. 运行原理

通过选择不同的步长,将数组拆分成若干个小的数组实现插入排序

若干个小的数组称为有序数列后,使得数组中的数据大致有序

最后再对整体完成一个插入排序

5. 快速排序

1. 时间复杂度为O(nlogn)

2. 不稳定的排序算法

3. 耗时:4 - 10ms

4. 运行原理

选择左边的作为键值,从后面找一个比键值小的放前面,从前面找一个比键值大的放后面

左右两边有元素则递归调用快速排序

  

6. 折半查找 -- 二分查找

http://www.xdnf.cn/news/1263943.html

相关文章:

  • 机器学习——支持向量机(SVM)实战案例
  • wodpress结构化数据对SEO的作用
  • 在 Debian 系统上安装 Redis服务
  • R语言代码加密(1)
  • OpenBMC中libgpio架构与驱动交互全解析:从硬件映射到应用控制
  • 《Graph machine learning for integrated multi-omics analysis》
  • 机器学习——KMeans聚类算法(算法原理+超参数详解+实战案例)
  • Vuex 数据共享
  • Shell脚本实现自动封禁恶意扫描IP
  • 第39周——训练自己的数据集
  • vscode EIDE 无法编译,提示 “文件名、目录名或卷标语法不正确;
  • C语言编译流程讲解
  • centos出现ping: baidu.com: 未知的名称或服务问题
  • DMETL简单介绍、安装部署和入门尝试
  • nflsoi 8.8 题解
  • Linux 内核发包流程与路由控制实战
  • 用 “故事 + 价值观” 快速建立 IP 信任感
  • 亚马逊广告运营如何平衡ASIN投放和关键词投放
  • Chrome DevTools Protocol 开启协议监视器
  • C/C++与JavaScript的WebAssembly协作开发指南
  • Vue框架总结案例
  • 机器学习-----SVM(支持向量机)算法简介
  • PEV2(PostgreSQL Explain Visualizer 2)
  • 「安全发」ISV对接支付宝+小猎系统
  • DataFun联合开源AllData社区和开源Gravitino社区将在8月9日相聚数据治理峰会论坛
  • Blob File Buffer ArrayBuffer uint8Array DataView 的关联
  • 使用pytest对接口进行自动化测试
  • 5. 缓存-Redis
  • Java文件操作与IO流核心技术解析
  • 【matlab】采样信号的低通滤波、高通滤波