• 二分搜索之C++实现


    二分搜索之C++实现

    一、源代码:BinarySearch.cpp

     1 #include<iostream>
     2 using namespace std;
     3 
     4 /*定义输出一维数组的函数*/
     5 void print(int array[], int n)
     6 {
     7     for (int i = 0; i < n; i++)
     8     {
     9         cout << array[i] << " ";
    10     }
    11     cout << endl;
    12 }
    13 
    14 /*定义二分搜索的函数:array,有序序列;n,序列长度;x,要查找的数*/
    15 int binarySearch(int array[], int n, int x)
    16 {
    17     //初始化左右边界
    18     int left = 0, right = n - 1;
    19     //当左右边界不重合时
    20     while (left <= right)
    21     {
    22         //初始化边界的中点
    23         int middle = (left + right) / 2;
    24         //判断所查找元素和当前中点元素是否相等,如果相等则返回中点元素所在的位置
    25         if (x == array[middle])
    26         {
    27             return middle;
    28         }
    29         else if (x > array[middle])
    30         {
    31             //如果所查找元素大于中点元素,则所查找元素在右部分,则将左边界向右移
    32             left = middle + 1;
    33         }
    34         else{
    35             //说明所查找元素小于中点元素,则所查找元素在做部分,则将右边界向左移
    36             right = middle - 1;
    37         }
    38     }
    39     //如果找不到,则返回-1
    40     return -1;
    41 }
    42 int main()
    43 {
    44     //定义待排序的一维数组
    45     int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    46     //输出原始数组
    47     cout << "原始数组是:" << endl;
    48     print(array, 10);
    49     //定义要查找的数
    50     int number;
    51     //输入要查找的数
    52     cout << "请输入要查找的数:";
    53     cin >> number;
    54     //调用二分搜索的函数进行查找
    55     int location = binarySearch(array, 10, number);
    56     if (location > 0)
    57     {
    58         //说明找到了
    59         cout << number << "在该序列中,是第" << (location + 1) << "个数" << endl;
    60     }
    61     else
    62     {
    63         //说明没找到
    64         cout << number << "不在该序列中..." << endl;
    65 
    66     }
    67     return 0;
    68 }

    二、运行效果

    在序列中

    不在序列中

     

  • 相关阅读:
    Html代码查看器
    Http请求
    HTTP协议
    AsyncTask2
    AsyncTask
    幽灵线程解决方案
    handler消息机制入门
    多叉树的树形背包常见建模方法
    Codeforces Round #263
    怎样在win7下装ubuntu(硬盘版安装)
  • 原文地址:https://www.cnblogs.com/zfc-java/p/7392446.html
Copyright © 2020-2023  润新知