欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > 二分查找效率提高的思路是什么

二分查找效率提高的思路是什么

2024/10/25 16:28:08 来源:https://blog.csdn.net/2301_80079026/article/details/141712564  浏览:    关键词:二分查找效率提高的思路是什么

二分查找比如进行了n次,最后找到一个元素,从后往前,1乘以2就是上次二分查找所剩下的元素,以此类推,进行了n次,就是总共有2的n次个元素,总元素为m个,要是一个一个查找,则最多为m次,也就是2的n次等于m,效率也就变为了log以2为底m的对数

同时这里要注意,在进行二分折半的时候,左下标和右下标不能直接相加,否则可能会导致溢出的问题,要用左下标加上(右下标减去左下标之后的一半)

如下:

#include<stdio.h>
void seek(int arr[], int n)
{
    int m = 0;
    scanf("%d", &m);
    int left = 0;
    int right = n - 1;
    int mid = left + (right - left) / 2;//这里不用(left+right)/2,防止left+right溢出
    int flag = 0;//假设没找到
    while (left <= right)
    {
        if (arr[mid] > m)
        {
            right = mid - 1;
        }
        else if (arr[mid] < m)
        {
            left = mid + 1;
        }
        else
        {
            printf("找到了,下标是:%d\n", mid);
            flag = 1;
            break;
        }
        mid = left + (right - left) / 2;
    }
    if (flag == 0)
        printf("找不到\n");
}
int main()
{
    int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
    int sz = sizeof(arr) / sizeof(arr[0]);
    seek(arr, sz);
    return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com