क्या मुझे कुछ मदद मिल सकती है? मैंने इसे काम करने के लिए कई तरीकों का प्रयास किया है, मुझे सरणी को क्रमबद्ध और प्रिंट करने के लिए मिला है लेकिन उसके बाद मेरा बाइनरी खोज फ़ंक्शन दौड़ना नहीं चाहता और मुझे सही परिणाम दे। यह हमेशा मुझे -1 देता है। कोई मदद?जावा बाइनरी खोज
public class BinarySearch {
public static final int NOT_FOUND = -1;
public static int binarySearch(double[] a, double key) {
int low = 0;
int high = a.length -1;
int mid;
while (low<=high) {
mid = (low+high) /2;
if (mid > key)
high = mid -1;
else if (mid < key)
low = mid +1;
else
return mid;
}
return NOT_FOUND;
}
public static void main(String[] args) {
double key = 10.5, index;
double a[] ={10,5,4,10.5,30.5};
int i;
int l = a.length;
int j;
System.out.println("The array currently looks like");
for (i=0; i<a.length; i++)
System.out.println(a[i]);
System.out.println("The array after sorting looks like");
for (j=1; j < l; j++) {
for (i=0; i < l-j; i++) {
if (a[i] > a[i+1]) {
double temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
}
for (i=0;i < l;i++) {
System.out.println(a[i]);
}
System.out.println("Found " + key + " at " + binarySearch(double a[], key));
}
}
मैं कोड के माध्यम से एक डिबगर में कदम और देखो क्यों यह तरीका यह होना चाहिए व्यवहार नहीं कर रहा होगा। btw। एक बग जो आपको अपने आप को खोजने की संभावना नहीं है, वह मध्य 'मध्य = (कम + उच्च) >>> 1 होना चाहिए;' मैं इसे जेडके में अरबी के माध्यम से कोड में भी तुलना करता हूं क्योंकि यह काम करता है और है लगभग एक जैसा। ;) –