二分查找
public class BinarySearch {
/**
* 二分查找
* @param arr 数据源
* @param elem 需要查找的元素
* @param left 查找范围的下限
* @param right 查找范围的上限
* @return 元素的下标,未找到返回 -1
*/
public static int binarySearch(int arr[], int elem, int left, int right) {
// elem 不存在
if (left > right) {
return -1;
}
// 找到了,返回
int mid = (left + right) / 2;
if (arr[mid] == elem) {
return mid;
}
if (elem > arr[mid]) {
// 搜索右边
return binarySearch(arr, elem, mid + 1, right);
} else {
// 搜索左边
return binarySearch(arr, elem, left, mid - 1);
}
}
}
冒泡排序
public class BubbieSort {
public static void bubbieSort(int arr[]) {
for (int i=0; i<arr.length; i++) {
boolean isSroted = true;
for (int j=0; j<arr.length - 1 - i; j++) {
if (arr[j] > arr[j+1]) {
int t = arr[j];
arr[j] = arr[j+1];
arr[j] = t;
isSroted = false;
}
}
if (isSroted) {
break;
}
}
}
}