zoukankan      html  css  js  c++  java
  • 折半查找

    折半查找是在查找元素有序的情况下,一种很好的查找方法。

    我们计算原始数据的个数n,这样我们就可以计算出中间mid = (1+n)/2

    下面我们就看要查找的值key跟中间mid位的值即a[mid]进行比较,如果key>a[mid],则说明要查找的元素在后半部分,则把上面的1换成mid+1,如果key<a[mid],则说明要查找的元素在前半部分,则将上述最高位n缓冲mid-1,如果key=a[mid]则说明已经找到该元素。依次上述一直到找到元素位置,找不到则返回0.

    具体的代码如下:

    #include <stdio.h>
    
    int binarySearch(int a[],int n,int key);
    
    int binarySearch(int a[],int n,int key)
    {
        int low,high,mid;
        low = 1;
        high = n;
        while(low<=high)
        {
            mid = (low+high)/2;
            if(key<a[mid])
                high = mid -1;
            else if(key>a[mid])
                low = mid+1;
            else
                return mid;
        }
        return 0;
    }
    
    int main(void)
    {
        int result;
        int a[10] = {1,3,7,9,10,12,14,16,43,56};
        result = binarySearch(a,10,43);
        printf("binary %d ",result);
        return 0;
    }
  • 相关阅读:
    JavaScript 常见面试题
    textarea 元素的 placeholder 属性不显示
    CSS 画一个八卦
    CSS 画一个心
    JS判断客户端是否是iOS或者Android端
    前端面试题(一)
    选中文字改变默认颜色
    红包雨的实现
    template 的使用
    函数和入参
  • 原文地址:https://www.cnblogs.com/fengbing/p/3582296.html
Copyright © 2011-2022 走看看