Giúp kiểm tra code binary search

Khi mình nhập số 1 chữ số và 2 chữ số ko có trong mảng thì ko cout ra ko tim thầy x đc
Cảm ơn mọi người.

#include<iostream>
using namespace std;
void inputarray(int M[],int n);
void outputarray(int M[],int n);
int binarysearch(int M[],int n,int x);
int binarysearchbyrecursion(int M[], int x,int left,int right);
int main()
{
	int n;
	cout<<"Nhap so luong phan tu: ";
	cin>>n;
	int M[n];
	inputarray(M,n);
	outputarray(M,n);
	float x;
	cout<<"\nNhap so can tim: ";
	cin>>x;
	int kq=binarysearch(M,n,x);
	if(kq==-1)
	{
		cout<<"Khong tim thay "<<x;
	}
	else
	{
		cout<<"Tim thay "<<x<<" o vi tri: "<<kq;
	}
	
	return 0;
}
void inputarray(int M[],int n)
{
	for(int i=0;i<n;i++)
	{
		cout<<"M["<<i<<"]=";
		cin>>M[i];
    }
}
void outputarray(int M[],int n)
{
	for(int i=0;i<n;i++)
	{
		cout<<M[i]<<"\t";
    }
}
int binarysearch(int M[],int n,int x)
{
	int left=0;
	int right=n-1;
	int mid;
	do
	{
		mid= (right +left)/2;
		if(x==M[mid])
		{
			return mid; // tim thay x tai mid
		}
		else if(M[mid]>x)
		{
			right==mid-1;
		}
		else
		{
			left=mid+1;
		}
	}
	while(left<=right);
	return -1;   // tim het day ma ko co x
}

chỗ M[mid]>x ở binarysearch right==mid-1 kìa, 1 dấu = thôi

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?