@@ -612,7 +612,43 @@ PhantomReference при вызове метода `get()` возвращает
612612
613613Пример кода двоичного поиска:
614614``` java
615- package test2 ;
615+ public class Q {
616+ public static void main (String [] args ) {
617+ Q q = new Q ();
618+ q. binSearch();
619+ }
620+
621+ private void binSearch () {
622+ int [] inpArr = {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 };
623+ Integer result = binSearchF(inpArr, 1 , 0 , inpArr. length - 1 );
624+ System . out. println(" -----------------------" );
625+ result = binSearchF(inpArr, 2 , 0 , inpArr. length - 1 );
626+ System . out. println(" Found at position " + result);
627+ }
628+
629+ private Integer binSearchF (int [] inpArr , int searchValue , int low , int high ) {
630+ Integer index = null ;
631+ while (low <= high) {
632+ System . out. println(" New iteration, low = " + low + " , high = " + high);
633+ int mid = (low + high) / 2 ;
634+ System . out. println(" trying mid = " + mid + " inpArr[mid] = " + inpArr[mid]);
635+ if (inpArr[mid] < searchValue) {
636+ low = mid + 1 ;
637+ System . out. println(" inpArr[mid] (" + inpArr[mid] + " ) < searchValue(" + searchValue + " ), mid = " + mid
638+ + " , setting low = " + low);
639+ } else if (inpArr[mid] > searchValue) {
640+ high = mid - 1 ;
641+ System . out. println(" inpArr[mid] (" + inpArr[mid] + " ) > searchValue(" + searchValue + " ), mid = " + mid
642+ + " , setting high = " + high);
643+ } else if (inpArr[mid] == searchValue) {
644+ index = mid;
645+ System . out. println(" found at index " + mid);
646+ break ;
647+ }
648+ }
649+ return index;
650+ }
651+ }
616652
617653import java.util.HashMap ;
618654import java.util.IdentityHashMap ;
0 commit comments