C++二分法在数组中查找关键字的方法

 更新时间:2015年09月24日 16:45:30   作者:清清飞扬  
这篇文章主要介绍了C++二分法在数组中查找关键字的方法,涉及C++数组查找算法的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了C++二分法在数组中查找关键字的方法。分享给大家供大家参考。具体如下:

/*
  此程序演示了二分法查找算法(针对按从小到大排列的数组)的实现。
*/
#include <iostream>
using namespace std;
/*
  功能: 实现数组的二分法查找(只算法只适合按从小到大排列的数组)
  返回值:关键字在数组中的下标, 返回-1表示未找到
  a[]:  要搜索的数组
  len:  数组元素个数
  key:  要查找的关键字
*/
int binSearch(int a[], int len, int key)
{
  int i = len / 2;
  int ii = 0;
  if(len < 1)
    return -1;
  if((key > a[i]) && (len - i > 0))
  {
    ii = binSearch(a+i+1, len - i - 1, key); // 在后半段数组中查找
    if(ii != -1)
      return ii + i + 1; // 加上数组前半段的长度
    else
      return -1;
  }
  else if(key < a[i] && i > 0) // 在前半段数组中查找
    return binSearch(a, i, key);
  else if(key == a[i])
    return i; // 返回关键字在数组中的下标
  else
    return -1; // 未在数组中找到关键字
}
int main()
{
  int a[] = {2, 4, 5, 20, 24, 35, 66, 78, 98};
  int len = sizeof(a) / sizeof(int);
  int i, key = -1;
  while(1)
  {
    cin>>key;
    i = binSearch(a, len, key);
    printf("%d\n", i);
    if(key > 100)
      break;
  }
  return 0;
}

希望本文所述对大家的C++程序设计有所帮助。

相关文章

  • C语言实现数独程序的示例代码

    C语言实现数独程序的示例代码

    数独是源自瑞士的一种数学游戏。是一种运用纸、笔进行演算的逻辑游戏。本文将利用C语言实现数独程序,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-03-03
  • C语言 动态分配数组案例详解

    C语言 动态分配数组案例详解

    这篇文章主要介绍了C语言 动态分配数组案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • C语言文件操作中 fgets与fputs 函数详解

    C语言文件操作中 fgets与fputs 函数详解

    这篇文章主要介绍了C语言文件操作中 fgets与fputs 函数详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • C语言简明清晰讲解结构体

    C语言简明清晰讲解结构体

    C语言结构体(Struct)从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,是由 int、char、float 等基本类型组成的。你可以认为结构体是一种聚合类型
    2022-05-05
  • 浅谈QT打包的两种方式

    浅谈QT打包的两种方式

    本文主要介绍了浅谈QT打包的两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • C++ odr用法案例详解

    C++ odr用法案例详解

    这篇文章主要介绍了C++ odr用法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • 详解C++虚函数表存储位置

    详解C++虚函数表存储位置

    相信大家知道虚表指针和虚函数存储的位置,但对于虚函数表的存储位置一时无法确定。本文就来和大家详细聊聊相关内容,希望对大家有所帮助
    2023-04-04
  • 通过c++的sort函数实现成绩排序功能

    通过c++的sort函数实现成绩排序功能

    这篇文章主要介绍了通过c++的sort函数实现成绩排序,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • C语言左旋转字符串与翻转字符串中单词顺序的方法

    C语言左旋转字符串与翻转字符串中单词顺序的方法

    这篇文章主要介绍了C语言左旋转字符串与翻转字符串中单词顺序的方法,给出了相关的两道算法题目作为例子,需要的朋友可以参考下
    2016-02-02
  • OpenCV实现抠图工具

    OpenCV实现抠图工具

    这篇文章主要为大家详细介绍了OpenCV实现抠图工具,文中示例代码介绍的非常详细,具有一定为大家详细的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01

最新评论