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

    今天在知乎上看了一个关于iOS面试题的一个问题,里面有一个题目如下:

    什么是Binary Search,其时间复杂度是多少呢?

    先介绍一下概念吧:

    折半查找(Binary Search):又称二分查找。他的前提是线性表的记录 必须有序。

    直接看代码:

    #include<stdio.h>
    //a[]是要查找的顺序表,n是表的长度,found是要查找的数据 
    int BinarySearch(int a[],int n,int found) 
    {
        //------------------------------这里最好先判断一下数组是不是为空 
        int low = 0;
        int high = n-1;
        int mid;
        while(low<=high) {
            mid = (low+high)/2;
    //        printf("-------------%d
    ",mid);
            if(found==a[mid]) {
                return mid;
            }else if(found<a[mid]) {
                high = mid-1;
            }else {
                low = mid+1;
            }
        } 
        
         return -1;
    }
    int main()
    {
        int found;
        int a[] = {0,1,16,24,35,47,59,62,73,88};
        int i=BinarySearch(a,10,88);
        if(i!=-1) {
            printf("在数组中的位置是:%d,
    ",i);
        }else
        {
            printf("没有找到数据");
        }
        return 0;
    } 

     其时间复杂度为O(logn)

  • 相关阅读:
    制作紧急启动光盘的内容
    开发短信发送程序的几则技巧
    Debugging WOW64
    SOS debug
    决定你高度的——是你对自己的要求(zt)
    Dialog Boxes
    Reference vs. Pointer
    DOCTYPE
    Win32 编程入门
    Assembly binding Configuration Files
  • 原文地址:https://www.cnblogs.com/zhanggui/p/4786614.html
Copyright © 2011-2022 走看看