Python实现常用查找数据结构及算法详解
5星 · 超过95%的资源 39 浏览量
更新于2024-08-30
1
收藏 1.69MB PDF 举报
查找数据结构及算法(Python实现)
一、基本概念
查找(Searching)是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。查找表(Search Table)是由同一类型的数据元素(或记录)构成的集合。关键字(Key)是数据元素中某个数据项的值,又称为键值。主键(Primary Key)是可唯一地标识某个数据元素或记录的关键字。
查找表按照操作方式可分为静态查找表(Static Search Table)和动态查找表(Dynamic Search Table)。静态查找表只做查找操作,主要操作是查询某个“特定的”数据元素是否在表中和检索某个“特定的”数据元素和各种属性。动态查找表在查找中同时进行插入或删除等操作。
二、无序表查找
无序表查找是数据不排序的线性查找,遍历数据元素。算法分析:最好情况是在第一个位置就找到了,此为O(1);最坏情况在最后一个位置才找到,此为O(n);所以平均查找次数为(n+1)/2。最终时间复杂度为O(n)。Python实现代码如下:
```
def sequential_search(lis, key):
length = len(lis)
for i in range(length):
if lis[i] == key:
return i
else:
return False
```
三、有序表查找
查找表中的数据必须按某个主键进行某种排序!二分查找(Binary Search)是查找表中的算法核心,在查找表中不断取中间元素与查找值进行比较,以二分之一的倍率进行表范围的缩小。时间复杂度为O(log(n))。Python实现代码如下:
```
def binary_search(lis, key):
low = 0
high = len(lis) - 1
time = 0
while low < high:
time += 1
mid = int((low + high) / 2)
if key < lis[mid]:
high = mid - 1
elif key > lis[mid]:
low = mid + 1
else:
# 打印折半的次数
print("折半次数:", time)
return mid
```
四、散列查找
散列查找(Hash Search)是根据关键字的散列值来确定记录的存储位置的查找方法。散列函数将关键字转换为数组的索引,然后根据索引值来访问记录。时间复杂度为O(1)。Python实现代码如下:
```
def hash_search(lis, key):
hash_value = hash(key) % len(lis)
if lis[hash_value] == key:
return hash_value
else:
return False
```
五、其他查找算法
还有许多其他的查找算法,如二叉排序树(Binary Sort Tree)、 AVL树(AVL Tree)、红黑树(Red-Black Tree)等。这些算法都有其优缺점,选择哪种算法取决于实际情况。
查找算法有很多种,每种算法都有其优缺点。选择合适的查找算法是非常重要的。Python提供了许多查找算法的实现,开发者可以根据实际情况选择合适的算法来提高查找效率。
2021-08-20 上传
2023-05-12 上传
2023-07-25 上传
2024-11-05 上传
2024-10-30 上传
2023-08-28 上传
2024-11-07 上传
weixin_38617297
- 粉丝: 2
- 资源: 896
最新资源
- JavaScript实现的高效pomodoro时钟教程
- CMake 3.25.3版本发布:程序员必备构建工具
- 直流无刷电机控制技术项目源码集合
- Ak Kamal电子安全客户端加载器-CRX插件介绍
- 揭露流氓软件:月息背后的秘密
- 京东自动抢购茅台脚本指南:如何设置eid与fp参数
- 动态格式化Matlab轴刻度标签 - ticklabelformat实用教程
- DSTUHack2021后端接口与Go语言实现解析
- CMake 3.25.2版本Linux软件包发布
- Node.js网络数据抓取技术深入解析
- QRSorteios-crx扩展:优化税务文件扫描流程
- 掌握JavaScript中的算法技巧
- Rails+React打造MF员工租房解决方案
- Utsanjan:自学成才的UI/UX设计师与技术博客作者
- CMake 3.25.2版本发布,支持Windows x86_64架构
- AR_RENTAL平台:HTML技术在增强现实领域的应用