zoukankan      html  css  js  c++  java
  • 二分查找算法

    二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列。

     1 #include<stdio.h>
     2 #define find_num 1023    //定义要查找的数
     3 int main(void)
     4 {
     5     int arry[1024];
     6     for (int i = 0; i < 1024; i++)
     7     {
     8         arry[i] = i;//二分查找要求必须是有序排列的
     9     }
    10     int up=arry[0], down=arry[1023], mid;
    11     int find_flag = 0;//定义是否查找到的标志位
    12     while (up <= down)//如果上 小于等于 下(注意必须要有等于,不然你可以试试查找1023),就查找
    13     {
    14         mid = (up + down) / 2;
    15         printf("up=%d mid=%d down=%d
    ", arry[up], arry[mid], arry[down]);
    16         if (arry[mid] == find_num)
    17         {
    18             printf("找到了
    ");
    19             find_flag = 1;
    20             break;//跳出循环
    21         }
    22         else if (arry[mid]  < find_num)
    23         {
    24             up = mid + 1;
    25         }
    26         else
    27         {
    28             down= mid - 1;
    29         }
    30     }
    31     if (find_flag == 0)
    32     {
    33         printf("没有查找到这个数
    ");
    34     }
    35     return 0;
    36 }

    在最坏的情况下,查找10次,2^10=1024;

      Analyze:

  • 相关阅读:
    找水王
    统计txt文档中的单词个数
    返回一个数组中最大子数组的和
    寻找最长字符串
    第二阶段冲刺第九天
    第二阶段冲刺第八天
    第二阶段冲刺第七天
    第二阶段冲刺第六天
    构建之法阅读笔记06
    小目标
  • 原文地址:https://www.cnblogs.com/yangguang-it/p/6535201.html
Copyright © 2011-2022 走看看