程序功能:用二分法查找数字在递增数组中的位置,并打印出来。

程序功能:用二分法查找数字在递增数组中的位置,并打印出来。 

/***************************

main.cpp测试二分法查找

***************************/

#include "stdafx.h"
#include "Arr50.h"

int _tmain(int argc, _TCHAR* argv[])
{
 CArr50 arr50;
 int i = 0;
 while(i < 200)
 {
  arr50.print_position(i++);
 }
 return 0;
}

 

 

/***************************

Arr50.h关于二分法查找

***************************/

#pragma once

class CArr50
{
public:
 CArr50(void);
public:
 ~CArr50(void);
public:
 void print_position(int iNum);
private:
 int *m_pArr;
};

/***************************

Arr50.cpp关于二分法查找

***************************/

#include "StdAfx.h"
#include "Arr50.h"
#include "iostream"
using namespace std;
const int m_sArr[] = {0, 2, 5, 8, 12, 15, 17, 19, 23, 26, 28, 30, 31, 35, 38, 39, 40, 45, 47, 48, 49, 59, 80, 128, 159, 189, 195};
CArr50::CArr50(void)
{
}

CArr50::~CArr50(void)
{
}
void CArr50::print_position(int iNum)
{
 int n = sizeof(m_sArr) / sizeof(int);
 int iRight = n - 1;
 int iLeft = 0;
 while(true)
 {
  if(iLeft > iRight)
   break;
  int iMid = (iLeft + iRight) / 2;
  if(m_sArr[iMid] == iNum)
  {
   printf("%3d %3d/n", iNum, iMid);
   break;
  }
  if(m_sArr[iMid] > iNum)
  {
   iRight = iMid - 1;
  }else
  {
   iLeft = iMid + 1;
  }
 };
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值