import java.io.*;
import java.lang.Integer;
class sort {
public void find(int val, int a[], int n) {
int mid = n / 2;
System.out.println("the mid value is:" + a[mid]);
if (a[mid] == val) {
System.out.println("found " + a[mid] + " in position " + mid);
} else if (a[mid] < val) {
for (int i = mid; i < n; i++) {
if (a[mid] == val) {
System.out.println("found" + val);
}
}
} else if (a[mid] > val) {
for (int i =0; i < mid; i++) {
if (a[mid] == val) {
System.out.println("found" + val);
}
}
}
}
public static void main(String args[])throws IOException {
DataInputStream in = new DataInputStream(System.in);
int temp;
int a[] = new int[100];
System.out.println("enter the nos of elements");
int n = Integer.parseInt(in.readLine());
for (int i =0; i < n; i++) {
a[i] = Integer.parseInt(in.readLine());
}
for (int i =0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (a[i] > a[j]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
for (int i =0; i < n; i++) {
System.out.println(a[i]);
}
System.out.println("enter the value to be searched");
int val = Integer.parseInt(in.readLine());
sort s = new sort();
s.find(val, a, n);
}
}
With the above code I want to find the user-defined value, from the existing array list using binary search. It checks only for middle value and not for the higher or lower value.
I think the loop doesn't works properly.
Kindly find a solution for this.