zoukankan      html  css  js  c++  java
  • 5.二分查找 = 折半查找

     1 /*
     2     折半查找 = 二分查找
     3         2的n次数 = m ,那么在m个数据中,查找1个数据,只需要n次
     4 
     5         效率非常高,对于海量数据非常高效
     6 
     7         前提是: 该数组已经排序过了
     8 */
     9 
    10 
    11 
    12 #include "BinarySearch.h"
    13 #include <iostream>
    14 using namespace std;
    15 int BinarySearch(int *a,int nLen,int nNumberic);
    16 
    17 int main()
    18 {
    19     const int nLen = 10;
    20     int list[nLen] = {1,2,3,4,5,6,7,8,9,10};
    21     int nNeedNumberic = 11;
    22 
    23     int nRet = BinarySearch(list,nLen,nNeedNumberic);
    24     if (-1 == nRet)
    25     {
    26         cout <<"二分查找:没找到"<<endl;
    27     }
    28     else
    29     {
    30         cout <<"二分查找:找到了!"<<endl;
    31     }
    32 
    33     system("pause");
    34     return 0;
    35 }
    36 
    37 
    38 //二分查找代码逻辑   
    39 int BinarySearch(int *a,int nLen,int nNumberic)//前提是: 该数组已经排序过了
    40 {
    41     /*
    42         *a是数组
    43         nLen是数组长度
    44         nNumberic是要查找的数据
    45 
    46         return的是下标
    47     */
    48 
    49     int low = 0;            //起始下标
    50     int high = nLen -1;        //最后1个下标
    51     int mid;                //中间下标
    52 
    53     while (low <= high)//当low > high的时候,循环结束,就表示在数组里没有找到nNumberic
    54     {
    55 
    56         mid = (low + high) / 2;//整数+整数相除可能有小数,但是默认规则是舍去小数位,依然可以得到小于high的整数索引
    57 
    58         if (a[mid] == nNumberic)
    59         {
    60             return mid;//找到了nNumberic,返回下标
    61         }
    62         else if (a[mid] < nNumberic)//nNumberic在下半部分
    63         {
    64             low = mid + 1;//重新设置查找范围的起始地址  
    65         }
    66         else if (a[mid] > nNumberic)
    67         {
    68             high = mid - 1;//重新设置查找返回的结束地址
    69         }
    70 
    71         //这里的 mid + 1 和 mid - 1 只是重新设置查找范围
    72     }
    73 
    74     //如果没有该nNumberic 就返回-1
    75     return -1;
    76     
    77 }
  • 相关阅读:
    asp.net HC框架
    Jenkins之构建触发器配置(转载)
    Mac系统
    Macaca命令行
    Appnium学习日记四(Calculator示例)
    Appnium学习日记三(安装Android模拟器)
    Appnium学习日记二(安装Android开发环境)
    Appnium学习日记一(下载安装Appnium)
    Jmeter的安装
    WCF返回JSON的详细配置
  • 原文地址:https://www.cnblogs.com/Froger/p/6811875.html
Copyright © 2011-2022 走看看