Skip to content

Commit 4b555aa

Browse files
committed
fix Exception: ArrayIndexOutOfBoundsException by int overflow
1 parent 1d0873c commit 4b555aa

1 file changed

Lines changed: 9 additions & 9 deletions

File tree

SortingAlgorithm/Java/BinaryInsertionSort/BinaryInsertionSort.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ private static int binarySearch(byte[] a, byte key, int lo, int hi) {
6464

6565
int mid;
6666
while (lo < hi) {
67-
mid = (lo + hi) >>> 1;
67+
mid = lo + ((hi - lo) >>> 1);
6868
if (key < a[mid]) {
6969
hi = mid;
7070
}
@@ -151,7 +151,7 @@ private static int binarySearch(char[] a, char key, int lo, int hi) {
151151

152152
int mid;
153153
while (lo < hi) {
154-
mid = (lo + hi) >>> 1;
154+
mid = lo + ((hi - lo) >>> 1);
155155
if (key < a[mid]) {
156156
hi = mid;
157157
}
@@ -239,7 +239,7 @@ private static int binarySearch(short[] a, short key, int lo, int hi) {
239239

240240
int mid;
241241
while (lo < hi) {
242-
mid = (lo + hi) >>> 1;
242+
mid = lo + ((hi - lo) >>> 1);
243243
if (key < a[mid]) {
244244
hi = mid;
245245
}
@@ -326,7 +326,7 @@ private static int binarySearch(int[] a, int key, int lo, int hi) {
326326

327327
int mid;
328328
while (lo < hi) {
329-
mid = (lo + hi) >>> 1;
329+
mid = lo + ((hi - lo) >>> 1);
330330
if (key < a[mid]) {
331331
hi = mid;
332332
}
@@ -414,7 +414,7 @@ private static int binarySearch(long[] a, long key, int lo, int hi) {
414414

415415
int mid;
416416
while (lo < hi) {
417-
mid = (lo + hi) >>> 1;
417+
mid = lo + ((hi - lo) >>> 1);
418418
if (key < a[mid]) {
419419
hi = mid;
420420
}
@@ -501,7 +501,7 @@ private static int binarySearch(float[] a, float key, int lo, int hi) {
501501

502502
int mid;
503503
while (lo < hi) {
504-
mid = (lo + hi) >>> 1;
504+
mid = lo + ((hi - lo) >>> 1);
505505
if (key < a[mid]) {
506506
hi = mid;
507507
}
@@ -589,7 +589,7 @@ private static int binarySearch(double[] a, double key, int lo, int hi) {
589589

590590
int mid;
591591
while (lo < hi) {
592-
mid = (lo + hi) >>> 1;
592+
mid = lo + ((hi - lo) >>> 1);
593593
if (key < a[mid]) {
594594
hi = mid;
595595
}
@@ -689,7 +689,7 @@ private static int binarySearch(Object[] a, Comparable key, int lo, int hi) {
689689

690690
int mid;
691691
while (lo < hi) {
692-
mid = (lo + hi) >>> 1;
692+
mid = lo + ((hi - lo) >>> 1);
693693
if (key.compareTo(a[mid]) < 0) {
694694
hi = mid;
695695
}
@@ -752,7 +752,7 @@ private static <T> int binarySearch(T[] a, T key, int lo, int hi, Comparator<? s
752752

753753
int mid;
754754
while (lo < hi) {
755-
mid = (lo + hi) >>> 1;
755+
mid = lo + ((hi - lo) >>> 1);
756756
if (c.compare(key, a[mid]) < 0) {
757757
hi = mid;
758758
}

0 commit comments

Comments
 (0)