Python实现顺序,二分和哈希查找算法

顺序查找

顺序查找(线性查找)是一种最基本的查找算法。它逐个检查列表中的每个元素,直到找到目标元素或检查完整个列表。

算法步骤:
  1. 从列表的第一个元素开始,依次检查每个元素。
  2. 如果找到目标元素,返回其索引。
  3. 如果检查完整个列表仍未找到目标元素,返回-1。

Python实现顺序查找

def sequential_search(lst, target):
    for index, element in enumerate(lst):
        if element == target:
            return index
    return -1

# 示例
lst = [3, 5, 2, 7, 9, 1]
target = 7
result = sequential_search(lst, target)
print("目标元素的索引:", result)

二分查找

二分查找适用于有序列表。它通过反复将查找范围缩小一半,快速定位目标元素。

算法步骤:
  1. 设定初始查找范围为整个列表。
  2. 计算查找范围的中间索引。
  3. 比较中间元素与目标元素:
    • 如果相等,返回中间索引。
    • 如果目标元素小于中间元素,缩小查找范围到左半部分。
    • 如果目标元素大于中间元素,缩小查找范围到右半部分。
  4. 重复步骤2-3,直到找到目标元素或查找范围为空。

Python实现二分查找

def binary_search(lst, target):
    left, right = 0, len(lst) - 1
    
    while left <= right:
        mid = (left + right) // 2
        if lst[mid] == target:
            return mid
        elif lst[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    
    return -1

# 示例(列表必须是有序的)
lst = [1, 2, 3, 5, 7, 9]
target = 7
result = binary_search(lst, target)
print("目标元素的索引:", result)

哈希查找

哈希查找通过使用哈希表(字典)将查找时间复杂度降为常数时间。它将元素存储在一个哈希表中,使用键值对来实现快速查找。

算法步骤:
  1. 创建一个哈希表,将列表中的每个元素插入表中。
  2. 直接使用目标元素作为键在哈希表中查找其对应的值。

Python实现哈希查找

def hash_search(lst, target):
    hash_table = {element: index for index, element in enumerate(lst)}
    
    return hash_table.get(target, -1)

# 示例
lst = [3, 5, 2, 7, 9, 1]
target = 7
result = hash_search(lst, target)
print("目标元素的索引:", result)

这三种查找算法适用于不同的情况:

  • 顺序查找适用于小规模且无序的列表。
  • 二分查找适用于有序列表,查找效率高。
  • 哈希查找适用于需要快速查找的场景,但需要额外的存储空间来维护哈希表。
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闲人编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值