紙媒体で管理するとなくなりがちなのでブログで進捗などを管理することにしました
※殆どの記事は自分自身のためだけにかいています.他人に見せられるレベルには至っていません...

二分探索

#include <bits/stdc++.h>
using namespace std;
#define NOT_FOUND -1

int binary_search(int A[],int n,int key)
{
	int left = 0;
	int right =n;
	while(left<right){
		int mid = (left+right)/2;
		if(A[mid]==key){
			return mid;
		}else if(key<A[mid]){
			right = mid;
		}else{
			left = mid+1;
		}
	}
	return NOT_FOUND;
}

int main()
{
	int A[11] = {1,2,2,3,5,7,10,11,11,12,41};
	cout<<binary_search(A,11,2)<<endl;//2
	cout<<binary_search(A,11,4)<<endl;//-1
	cout<<binary_search(A,11,12)<<endl;//9
	return 0;
}

探索なので「ある」か「ないか」を返す.
探索している値が複数個ある場合は前から返すわけではないので注意.
binary_search(A,11,2)ではA[1],A[2]に2があり2を返している.