📜  线性和二进制搜索 - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:27:33.072000             🧑  作者: Mango

线性和二进制搜索 - C 编程语言

线性搜索

线性搜索是在一个数据集合中按顺序查找一个特定的值的过程。它从第一个元素开始,逐个地比较每个元素,直到找到所需的元素或搜索完整个数据集。

代码示例
int linearSearch(int arr[], int n, int x)
{
    int i;
    for(i = 0; i < n; i++)
    {
        if(arr[i] == x)
            return i;
    }
    return -1;
}
时间复杂度

在最坏的情况下(即所搜索的元素位于列表的末尾),线性搜索需要进行 $n$ 次比较,所以时间复杂度为 $O(n)$。

二进制搜索

二进制搜索(也称为折半搜索)是一种高效的搜索算法,它利用了有序数列的特性。它首先将数据集合按升序或降序排序,然后重复地将数据集合分成两半并查找目标值,直到找到所需的元素或直到剩下一个元素为止。

代码示例
int binarySearch(int arr[], int l, int r, int x)
{
    while(l <= r)
    {
        int mid = l + (r - l) / 2; // 计算中间位置
        if(arr[mid] == x)
            return mid;
        if(arr[mid] < x)
            l = mid + 1; // 在右半部分继续搜索
        else
            r = mid - 1; // 在左半部分继续搜索
    }
    return -1; // 没有找到
}
时间复杂度

在最坏的情况下(即搜索的元素位于列表的末尾或不在列表中),二进制搜索需要进行 $log_2n$ 次比较,所以时间复杂度为 $O(log_2n)$。