zoukankan      html  css  js  c++  java
  • 二分查找的实现

     二分查找又称折半查找,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。折半搜索每次把搜索区域减少一半,时间复杂度为Ο(logn)。

    优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。

    算法要求:

    1. 必须采用顺序存储结构。
    2. 必须按关键字大小有序排列。

    二分查找的递归实现

     1 int Search(int ST[],int low,int high,int key)
     2 {
     3     int mid;
     4     while(low<=high)
     5     {
     6         mid=(low+high)/2;
     7         if(key==ST[mid])
     8         {
     9             cout<<"所查找的为第"<<mid+1<<""<<endl;
    10             return mid;
    11         }
    12         else if ((ST[low]<=ST[high]&&ST[mid]<=key)||(ST[low]>ST[high]&&ST[mid]>=key))
    13             return Search(ST,mid+1,high,key);
    14         else
    15             return Search(ST,low,mid-1,key);
    16     }
    17     cout<<"不存在该元素"<<endl;
    18     return 0;
    19 }

    作者:耑新新,发布于  博客园

    转载请注明出处,欢迎邮件交流:zhuanxinxin@aliyun.com

  • 相关阅读:
    PHP学习(一)----变量及字符串
    swith
    重写和重载的区别
    静态对象与非静态对象
    继承
    面向对象
    五个对面向对象的实例
    双色球 36选7
    菱形java代码
    双色球代码
  • 原文地址:https://www.cnblogs.com/Arthurian/p/6204510.html
Copyright © 2011-2022 走看看