嵌入式学习【第六周】

算法

一、算法的定义及其特性

在这里插入图片描述

算法是解决问题的步骤,有穷的规则的有序集合;
程序=算法+数据结构

2. 特点

在这里插入图片描述

3. 算法和数据结构的关系

算法的设计:依据数据元素之间的逻辑结构,1对1,1对2,1对多
算法的实现:依赖于数据元素的存储结构(顺序存储、链式存储,散列存储)

4. 评价算法的好处

在这里插入图片描述

5. 算法的时间复杂度

定义:算法的时间复杂度定义为算法中可执行语句的频度之和,记为T(n)
在这里插入图片描述
是先去求每句话的执行的频度;
求频度中最大项,根据算法中语句执行的最大次数(频度)来估算一个算法执行时间的数
量级。
时间复杂度的估算是保留最高次项,并且去掉最高此项的系数
在这里插入图片描述
在这里插入图片描述

6. 查找

6.1 查找概念

在这里插入图片描述
在这里插入图片描述

7. 查找的分类

7.1 顺序查找

在这里插入图片描述

7.2 折半查找
7.3 分块查找

在这里插入图片描述
在这里插入图片描述
对无序的元素,数据唯一不重复;
构建一个索引表:
·K max代表的快内的最大值
·起始序号:
依据索引表,实现分块查找。块内无序,块之间有序;

7.4 哈希查找

在这里插入图片描述
目的:让查找的算法时间复杂度变成常数级
构建一个哈希映射关系:
数据元素中的某一个数据项,作为主key.构建key值和地址之间的映射关系;
依据key值,直接找到记录的过程;

7.5 哈希映射质数取余

在这里插入图片描述
在这里插入图片描述
哈希算法:给予主key和地址之间构建的函数映射关系:最为简单的有
质数取余方法:选一个不大于表长度的质数。例如表长15,质数取13;
key%13===(0,12),求得的整数值,是表的下标;也就是表的地址;
因为质数取余,会存在地址冲突的问题。
线性探查法,解决冲突;(key+di)%13;

7.6 链地址方法 解决冲突问题—哈希表

在这里插入图片描述
发生冲突时候,将各条记录的链在一起;如图所示的例子,无聚集现象;冲突的数据元素
被链表链接在一起;
申请一块连续的单元,存放链表结点的首地址,冲突的结点以链表形式存储;
所有地址冲突的元素可以通过链表的首节点逐一访问;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值