c语言查找算法

1. 线性查找(Linear Search):

代码示例:

def linear_search(arr, key):
    for i in range(len(arr)):
        if arr[i] == key:
            return i
    return -1

代码分析:
线性查找算法通过遍历整个数组,逐个比较数组中的元素和目标元素,直到找到目标元素或遍历完整个数组。最坏情况下需要遍历整个数组才能找到目标元素,最好情况下只需比较一次即可找到目标元素。该算法的时间复杂度为O(n),其中n为数组的长度。

2. 二分查找(Binary Search):

代码示例:

def binary_search(arr, low, high, key):
    if low <= high:
        mid = low + (high - low) // 2
        if arr[mid] == key:
            return mid
        if arr[mid] > key:
            return binary_search(arr, low, mid - 1, key)
        return binary_search(arr, mid + 1, high, key)
    return -1

代码分析:
二分查找算法通过将数组分成两部分,判断目标元素位于数组的哪一部分,然后在该部分进行查找。每次查找都将数组分成两部分,因此每次查找后数组的规模都会减半。最坏情况下的时间复杂度出现在需要查找的元素在数组的两端或不存在的情况,最好情况下的时间复杂度出现在目标元素就是数组的中间元素的情况。该算法的时间复杂度为O(logn),其中n为数组的长度。

3. 哈希查找(Hash Search):

代码示例:

SIZE = 10

class Node:
    def __init__(self, key, value):
        self.key = key
        self.value = value

hashTable = [Node(-1, -1) for _ in range(SIZE)]

def hash_code(key):
    return key % SIZE

def insert(key, value):
    index = hash_code(key)
    while hashTable[index].key != -1:
        index = (index + 1) % SIZE
    hashTable[index].key = key
    hashTable[index].value = value

def search(key):
    index = hash_code(key)
    while hashTable[index].key != key:
        index = (index + 1) % SIZE
    return hashTable[index].value

代码分析:
哈希查找算法通过将值映射到哈希表中的索引位置,然后在该位置进行查找。平均情况下的时间复杂度为O(1),最坏情况下的时间复杂度为O(n),其中n为哈希表的大小。在哈希表中查找元素的时间复杂度主要取决于哈希函数的设计和哈希表的大小。如果哈希函数的设计合理且哈希表的大小足够大,哈希查找算法可以实现快速查找。然而,当哈希冲突较多时,查找性能可能会下降,导致最坏情况下的时间复杂度为O(n)。以上代码示例展示了如何使用哈希查找来查找目标元素。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值