• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Paul Clapham
  • Ron McLeod
  • Jeanne Boyarsky
  • Tim Cooke
Sheriffs:
  • Bear Bibeault
  • Henry Wong
  • Devaka Cooray
Saloon Keepers:
  • salvin francis
  • Tim Moores
  • Tim Holloway
  • Stephan van Hulst
  • Frits Walraven
Bartenders:
  • Jj Roberts
  • Carey Brown
  • Scott Selikoff

Chap 7 pg 628 from kathy & Sierra

 
Ranch Hand
Posts: 111
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi There,

Given a properly prepared String array containing five elements, which range of results could a proper invocation of Arrays.binarySearch() produce?

A. 0 through 4
B. 0 through 5
C. -1 through 4
D. -1 through 5
E. -5 through 4
F. -5 through 5
G. -6 through 4
H. -6 through 5

The answer is G

I am not able to understand the answer. Can any of you please explain?

Thanks
Saritha
 
Greenhorn
Posts: 23
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Match not found "A" "C" "E" "F" "G" "H"
Insert element
at index -1 -2 -3 -4 -5 -6

Array elements "B" "D" "F" "H" "J"

Match found 0 1 2 3 4


Consider that an array has the strings "B","D","F","H","J", . If match is found he binarySearch method returns the index of match. So it can return values from 0 to 4 if match is found

If match is not found it will return the index where the element could have been inserted
Eg:"A" is not in the array but the correct index where "A" can be inserted is 0. Since 0 is already valid it will return -1.
Similarly for "C" it would return -2 since "C" should go between B and D(0 and 1 index)
"K" would be inserted after "J" and hence -6(See above).
Basically we can insert an element that is not found either at the begining of array or end of the array or inbetween the array elements.
 
Sandhya Bhaskara
Greenhorn
Posts: 23
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
 
Sheriff
Posts: 9678
42
Android Google Web Toolkit Hibernate IntelliJ IDE Spring Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
remember that if a match is not found, binarySearch returns 1's complement of the place where the element should be inserted.

So if the element should be inserted at index 0, it will return -1(1's complement of 0 is -1). Similar is the case for all the indexes.

If you take 1's complement of the negative value that it returns, you will get the index of the location where the element must be inserted. So 1's complement of -1 is 0....
 
Ranch Hand
Posts: 178
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
To give you a formula for this, the value returned in case of unsuccessful searches will be (-insertionpoint-1), where "insertionpoint" is the zero-based index location where the element could have been inserted.
Taken from: Pg #577, K&B-310-065.

So, for an array of 5 elements, the index locations are from 0 to 4. Hence, on the other end, a new element can be inserted at index 5. As per the formula, the method returns (-5-1) which is -6.

So, the range of values is -6 till 4
[ October 10, 2008: Message edited by: Rekha Srinath ]
 
Sheriff
Posts: 14691
16
Eclipse IDE VI Editor Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
(Just ignore this. I can't resist mentioning that "kathy & Sierra" in the thread title is the same person )
 
aslika bahini
Ranch Hand
Posts: 111
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks to all. It helped a lot.

Saritha
 
You guys wanna see my fabulous new place? Or do you wanna look at this tiny ad?
the value of filler advertising in 2021
https://coderanch.com/t/730886/filler-advertising
reply
    Bookmark Topic Watch Topic
  • New Topic