package  csdn. dreamzuora. query; 
public  class  BinarySearch  implements  Search  { int [ ]  array; public  BinarySearch ( int [ ]  array)  { this . array =  array; } @Override public  int  search ( int  data)  { int  startIndex =  0 ; int  endIndex =  array. length -  1 ; int  midIndex =  startIndex +  ( endIndex -  startIndex)  /  2 ; while  ( midIndex >=  startIndex &&  midIndex <=  endIndex) { if  ( array[ midIndex]  ==  data) { return  midIndex; } if  ( data >  array[ midIndex] ) { startIndex =  midIndex +  1 ; } else  { endIndex =  midIndex -  1 ; } midIndex =  startIndex +  ( endIndex -  startIndex)  /  2 ; } return  - 1 ; } 
} package  csdn. dreamzuora. query; import  org. junit. Test; 
import  org. junit. jupiter. api. Assertions; import  static  org. junit. Assert. *; 
public  class  BinarySearchTest  { @Test public  void  search ( )  { int [ ]  array =  new  int [ 10 ] ; for  ( int  i =  0 ;  i <  10 ;  i++ ) { array[ i]  =  i; } BinarySearch binarySearch =  new  BinarySearch ( array) ; Assertions. assertEquals ( 3 ,  binarySearch. search ( 3 ) ) ; Assertions. assertEquals ( 8 ,  binarySearch. search ( 8 ) ) ; Assertions. assertEquals ( 0 ,  binarySearch. search ( 0 ) ) ; Assertions. assertEquals ( 9 ,  binarySearch. search ( 9 ) ) ; } 
}