查找算法(持续更新)

208 阅读1分钟

算法1:顺序查找

功能:在数组a中查找指定的数据key是否存在

参数:a是数组; n是数组a的个数; key是被查找的关键词

返回值:查找成功,返回key所在下标;不成功,返回-1。

//顺序查找
int find_seq(int a[], int n, int key)
{
    int i;
    for(i = 0; i < n; i++)
        if(key == a[i])
            return i;
    return -1;
}

算法2:二分查找

low 下界 ; high 上界; mid = (low + high) / 2 不进位取整

k = a[mid] : 查找成功,返回mid

k < a[mid] : high = mid - 1 继续

k > a[mid] : low = mid + 1继续

low > high : 查找不成功

//二分查找
int find_bin(int a[], int n, int key) //key表示需要查找的数
{
    int low = 0, high = n-1, mid;  //初始化low是0, high是n-1
    while(low <= high)
    {
        mid = (high + low) / 2;
        if(key == a[mid])
            return mid;
        if(key < a[mid])
            high = mid - 1;
        else
            low = mid + 1;
    }
    return -1;
}

主函数

int main()
{
    int f;
    int a[10] = {15,26,37,45,48,52,60,66,73,90};

    f = find_bin(a, 10, 37);

    if(f != -1)
        printf("查找成功,下标为 %d\n", f);
    else
        printf("查找失败!");
    return 0;
}