C++二分查找算法实例

前端之家收集整理的这篇文章主要介绍了C++二分查找算法实例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例为大家分享C++二分查找算法,通过改变边界位置来进行查找的方法代码如下:

#include <iostream>

using namespace std;


int search(int *p,int length,int key);
int search1(int *p,int key);

int main()
{
  cout << "Hello world!" << endl;
  int a[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14};
  int len = sizeof(a)/sizeof(int);
  int pos = search1(a,len,8);
  cout << pos << endl;
  return 0;
}

int search1(int *p,int key)
{
  int left=0;
  int right=length-1;
  while(left<=right)
  {
    int mid = (left+right)/2;
    if(p[mid]>=key)
    {
      right = mid-1;
    }else
    {
      left = mid+1;
    }
  }
  if(left<length && p[left]==key)
    return left;
  return -1;
}


int search(int *p,int key)
{
  int left=0;
  int right = length -1;

  while(left<=right)
  {
    int mid = (left+right)/2;
    if(p[mid]==key)
    {
      return mid;
    }
    if(p[mid] > key)
    {
      right = mid+1;
    }
    if(p[mid]<key)
    {
      left=mid-1;
    }
  }
  return -1;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

猜你在找的程序笔记相关文章