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;
    }
  • 相关阅读:
    memcached全面剖析
    Zabbix中文使用手册
    lombok
    guava cache
    linux 文件检索操作
    mysql慢查询
    碎片脚本注解(后续整理)
    Docker 目录挂载详述
    jenkins 添加 sonraqube java&vue项目记录
    Ansible unarchive模块
  • 原文地址:https://www.cnblogs.com/fengbing/p/3582296.html
Copyright © 2011-2022 走看看