二进制搜索功能未实现
Binary Search function is not getting implemented
代码的所有其他部分都在执行,但问题出现在执行二进制 search.The 算法时,我做的是正确的,但它总是给我相反的结果 answer.I 不要'了解代码中发生的事情。
即使当我执行程序并告诉代码搜索数组中存在的元素时。线性搜索给了我正确的答案,即元素存在,但是当它进入二进制搜索时,它说元素不存在。
import java.util.*;
public class VOperations {
int n,first,last;
void intializer(int Arr[]){
n=Arr.length;
}
void show(int Arr[])
{
for (int i=0; i<n; ++i)
System.out.print(Arr[i] + " ");
System.out.println();
}
void linearSearch(int s,int Arr[]){
int c =0;
for(int i=0;i<n;i++){
if(Arr[i]==s){
c++;
}
}
if(c==1)
System.out.println("Element found");
else
System.out.println("Not found");
}
int binSearch(int Arr[], int x)
{
int l = 0, r = Arr.length - 1;
while (l <= r) {
int m = l + (r - l) / 2;
if (Arr[m] == x)
return m;
if (Arr[m] < x)
l = m + 1;
else
r = m - 1;
}
return -1;
}
void bubbleSort(int Arr[])
{
int n = Arr.length;
for (int i = 0; i < n-1; i++)
for (int j = 0; j < n-i-1; j++)
if (Arr[j] > Arr[j+1])
{
int temp = Arr[j];
Arr[j] = Arr[j+1];
Arr[j+1] = temp;
}
show(Arr);
}
}
class Test3{
public static void main(String args[]){
VOperations ob=new VOperations();
Scanner sc=new Scanner(System.in);
System.out.println("Enter the number you want to search :");
int x = sc.nextInt();
int Arr[] = { 11,6,77,8,5,44,6,9,442,86,73,49,68,82 };
ob.intializer(Arr);
ob.show(Arr);
int result = ob.binSearch(Arr, x);
if (result == -1)
System.out.println("Element not present");
else
System.out.println("Element found at "
+ "index " + result);
ob.linearSearch(x, Arr);
ob.bubbleSort(Arr);
sc.close();
}
}
二分查找仅适用于已排序的输入。您的数组最初没有按顺序排列,并且您在尝试二分查找时还没有对它进行排序。
线性搜索没有相同的约束。
代码的所有其他部分都在执行,但问题出现在执行二进制 search.The 算法时,我做的是正确的,但它总是给我相反的结果 answer.I 不要'了解代码中发生的事情。 即使当我执行程序并告诉代码搜索数组中存在的元素时。线性搜索给了我正确的答案,即元素存在,但是当它进入二进制搜索时,它说元素不存在。
import java.util.*;
public class VOperations {
int n,first,last;
void intializer(int Arr[]){
n=Arr.length;
}
void show(int Arr[])
{
for (int i=0; i<n; ++i)
System.out.print(Arr[i] + " ");
System.out.println();
}
void linearSearch(int s,int Arr[]){
int c =0;
for(int i=0;i<n;i++){
if(Arr[i]==s){
c++;
}
}
if(c==1)
System.out.println("Element found");
else
System.out.println("Not found");
}
int binSearch(int Arr[], int x)
{
int l = 0, r = Arr.length - 1;
while (l <= r) {
int m = l + (r - l) / 2;
if (Arr[m] == x)
return m;
if (Arr[m] < x)
l = m + 1;
else
r = m - 1;
}
return -1;
}
void bubbleSort(int Arr[])
{
int n = Arr.length;
for (int i = 0; i < n-1; i++)
for (int j = 0; j < n-i-1; j++)
if (Arr[j] > Arr[j+1])
{
int temp = Arr[j];
Arr[j] = Arr[j+1];
Arr[j+1] = temp;
}
show(Arr);
}
}
class Test3{
public static void main(String args[]){
VOperations ob=new VOperations();
Scanner sc=new Scanner(System.in);
System.out.println("Enter the number you want to search :");
int x = sc.nextInt();
int Arr[] = { 11,6,77,8,5,44,6,9,442,86,73,49,68,82 };
ob.intializer(Arr);
ob.show(Arr);
int result = ob.binSearch(Arr, x);
if (result == -1)
System.out.println("Element not present");
else
System.out.println("Element found at "
+ "index " + result);
ob.linearSearch(x, Arr);
ob.bubbleSort(Arr);
sc.close();
}
}
二分查找仅适用于已排序的输入。您的数组最初没有按顺序排列,并且您在尝试二分查找时还没有对它进行排序。
线性搜索没有相同的约束。