Binary search quess

import java.util.Scanner;

public class Main {
static Scanner scn=new Scanner (System.in);

public static void main(String[] args) {
	int n=scn.nextInt();
	int []har=tin(n);
	int k=biary(har);
	System.out.println(k);
	
	

}
public static int[] tin(int a)
{
	int []arr=new int[a];
	for(int i=0;i<arr.length;i++)
	{
		arr[i]=scn.nextInt();
	}
				
	return arr;
}
public static int biary(int []arr)
{
	int mid=0;
	int m=scn.nextInt();
	if(m>0)
	{
	int l=0;
	int h=arr.length-1;
	while(l<=h)
	{
	 mid=(l+h)/2;
	if(arr[mid]>m)
	{
		h=mid-1;
	}
	else if(arr[mid]<m)
	{
		l=mid+1;
	}
	else 
	{
		return mid;
	}
	
	
	break;
	}
	}
	return -1;
	
}

}
why it is showing only 50%
which test cases are pending?

Hi Harsh,
You don’t have to use a break statement inside while loop because consider if the number does not at index mid in first iteration but present in the array then your code will return -1 whereas it should have return the idex of that element.

import java.util.Scanner; public claimport java.util.Scanner; public class Main { static Scanner scn=new Scanner (System.in); public static void main(String[] args) { int n=scn.nextInt(); int []har=tin(n); int k=biary(har); System.out.println(k); } public static int[] tin(int a) { int []arr=new int[a]; for(int i=0;i<arr.length;i++) { arr[i]=scn.nextInt(); } return arr; } public static int biary(int []arr) { int mid=0; int m=scn.nextInt(); if(m>0) { int l=0; int h=arr.length-1; while(l<=h) { mid=(l+h)/2; if(arr[mid]>m) { h=mid-1; } else if(arr[mid]<m) { l=mid+1; } else { return mid; } } } return -1; } }ss Main { static Scanner scn=new Scanner (System.in); public static void main(String[] args) { int n=scn.nextInt(); int []har=tin(n); int k=biary(har); System.out.println(k); } public static int[] tin(int a) { int []arr=new int[a]; for(int i=0;i<arr.length;i++) { arr[i]=scn.nextInt(); } return arr; } public static int biary(int []arr) { int mid=0; int m=scn.nextInt(); if(m>0) { int l=0; int h=arr.length-1; while(l<=h) { mid=(l+h)/2; if(arr[mid]>m) { h=mid-1; } else if(arr[mid]<m) { l=mid+1; } else { return mid; } } } return -1; } }