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);
}
}
通過上面的代碼,我想從現有數組列表中使用二分查找來查找用戶定義的值。它只檢查中間值,而不檢查更高或更低的值。實現二進制搜索
我認爲循環無法正常工作。
請爲此找到解決方案。
這不是二進制搜索。 – 2010-07-18 05:45:10
@True Soft,部分是二分查找,但是,這不是二分查找。我不確定@mano是否已準備好遞歸。 – strager 2010-07-18 05:46:52