aspose file tools*
The moose likes Beginning Java and the fly likes Arrays BinarySearch Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Arrays BinarySearch" Watch "Arrays BinarySearch" New topic
Author

Arrays BinarySearch

Jayaram Subramanian
Greenhorn

Joined: Aug 12, 2008
Posts: 7

We see that the array is not sorted. But instead of giving a negative value, the output comes as 2. What is the reason behind the output. Why is the first "c" getting ignored?
Ernest Friedman-Hill
author and iconoclast
Marshal

Joined: Jul 08, 2003
Posts: 24166
    
  30

By definition, the result is bogus if the input array is not sorted. But you can look at it and understand where the bogus result comes from, if you like.

Binary search works by looking at the center element of the array and deciding whether the search target would be before or after that element. The array is then divided in half. Since the array is assumed to be sorted, one half should contain all the elements that come after that center element, and the other half all the ones that come before it. The half that the target might be in is examined further; the other half is ignored. Therefore, the algorithm sees "b", decides that "c" must come after that, and completely ignores the first half of the array where the first "c" appears.


[Jess in Action][AskingGoodQuestions]
ramya narayanan
Ranch Hand

Joined: Oct 06, 2008
Posts: 338
Binary search works by looking at the center element of the array

Is there any way to find what is the center element's value during binary search.
Suppose

Here is there any built-in method in Arrays class to find out the center element .
Regards.
ramya narayanan
Ranch Hand

Joined: Oct 06, 2008
Posts: 338
Two points to consider

Then output comes as -2 why?

Then output comes as 0. Why?
How the sorting is done here?
Regards.
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 36514
    
  16
Question 1: The answer is in the ,%20java.lang.Object)]API documentation.
Question 2: You can easily answer that yourself.
fred rosenberger
lowercase baba
Bartender

Joined: Oct 02, 2003
Posts: 10916
    
  12

if you follow the logic Ernest laid out, you can see that in the first case, it will conclude that 'c' is not in the array.

and in the second case, it returns the correct answer, so I don't understand your question. Where is the confusion?

and finally, when you say "How the sorting is done here?" - a binarySearch is searching, not sorting. The binarySearch assumes the sorting has ALREADY BEEN DONE. So the actual answer to your question is "It isn't."


There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: Arrays BinarySearch
 
Similar Threads
java primitive problem
sequence confusion
Different output without the parantheses
Exception: java.rmi.RemoteException: Call invocation failed;
What data type should be assigned to logic iterate offset should take?