phần code của bạn lổi vài chổ mà hình như bạn đang tính dùng thuật toán sắp xếp sau đó tìm kiếm nhị phân thì phải .Chỉ là phần thuật toán tìm kiêm của bạn chua đúng , cho nên mình thử lại kèm kq từng bước cho bạn tham khảo
import java.util.Scanner;
public class timsn {
// public static final int x=10;
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
int b;
System.out.print("nhap b: ");
b=sc.nextInt();
int[] a=new int[b];
for(int i=0;i<b;i++){
a[i]=sc.nextInt();
}
for(int i=0;i<b;i++){
for(int j=i+1;j<b;j++){
if(a[i]>a[j]){
int t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(int i=0;i<b;i++){
System.out.println ("Mảng đã sắp xếp ");
System.out.println (a[i]+" ");
}
int k;
System.out.println("nhap so nguyen can tim: ");
k=sc.nextInt();
int result= binarySearch(a,0,b-1,k);
if (result == -1)
System.out.println("Element not present");
else
System.out.println("Element found at index " + result);
}
static int binarySearch(int arr[], int l, int r, int x)
{
if (r >= l) {
int mid = l + (r - l) / 2;
// If the element is present at the
// middle itself
if (arr[mid] == x)
return mid;
// If element is smaller than mid, then
// it can only be present in left subarray
if (arr[mid] > x)
return binarySearch(arr, l, mid - 1, x);
// Else the element can only be present
// in right subarray
return binarySearch(arr, mid + 1, r, x);
}
// We reach here when element is not present
// in array
return -1;
}
}
bạn có thể tham khảo thuật toán ở đây