二分查找
实验要求:输入一串数组,再输入一个数字,返回比较次数以及该数字是否在数组中
二分查找的原理
首先要有一个有序的列表,如果列表无序先用排序算法对无序列表进行排序。
假设有序列表为升序的,首先找到序列的中间数,将查找的数字与中间数进行比较,如果比中间数大则跟中间数右边的数字比较,如果比中间数小就跟中间数左边的数字进行比较,一直递归到只跟一个数字进行比较为止。
在列表的数字个数为奇数时,比如7个数字,中间数就是(1+7)/2=4 第四个数字,而当数字个数为偶数时,比如8个数字,中间数就是(1+8)/2=4取整为第四个数字。
代码实现
//
// main.cpp
// searching
// 二分查找
// 要求:打印出比较次数以及返回查询的数字是否在数组里
// Created by csy on 2020/12/8.
//
#include <stdio.h>
#include <iostream>
#include<assert.h>
#include <stdlib.h>
#include<vector>
using namespace std;
int BinarySearch(int a[],int target,int size);
int main(int argc,