c语言查找算法

发布时间:2023年12月23日

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)。以上代码示例展示了如何使用哈希查找来查找目标元素。

文章来源:https://blog.csdn.net/weixin_44738632/article/details/135173562
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。