publicstatic <E extends Comparable<E>> intbinarySearch(E[] array, int from, int to, E key){ if (from < 0 || to < 0) { thrownew IllegalArgumentException("params from & to must larger than 0."); }
if (from <= to) { int middle = (from >>> 1) + (to >>> 1); E temp = array[middle]; if (key.compareTo(temp) > 0) { from = middle + 1; } elseif (key.compareTo(temp) < 0) { to = middle - 1; } else { return middle; } }
return binarySearch(array, from, to, key); }
非递归实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14
publicstaticintbinarySearch(int[] array, int from, int to, int key){ while (from <= to) { int mid = (from + to) >>> 1; int midVal = array[mid]; if (midVal < key) { from = mid + 1; } elseif (midVal > key) { to = mid - 1; } else { return mid; } } return -(from + 1); }
冒泡排序
每当相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
1 2 3 4 5 6 7 8 9 10 11 12
publicstaticvoidbubbleSort(int[] array){ int len = array.length; for (int i = 0; i < len; i++) { for (int j = 0; j < len - i - 1; j++) { if (array[j] > array[j + 1]) { int temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } } }