二分查找java代码
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 ) ) ; }
}