排序算法中最快的是快速排序算法,
搜索算法中最快的是二分搜索算法。
根据作者(https://www.xncoding.com/2015/04/18/algorithm/sort-search.html)说的,递归和循环是等效的,我这里尝试了两种代码实现,二分查找。
1.递归。
public static int search(int[] arr,int star,int end,int number){
/*
递归实现
设置两个变量设置,i,j.
待寻找的值,number.
*/
int mid=(star+end)/2;
if(star>=end){
return -1;
}
if(arr[mid]==number){
return mid;
}
else if(arr[mid]>number){
return search(arr,0,mid-1,number);
}
else if(arr[mid]<number){
return search(arr,mid+1,end,number);
}
return -1;
}
2.循环
public static int search02(int arr[], int key){
int mid = arr.length / 2;
if (key == arr[mid]) {
return mid;
}
int start = 0;
int end = arr.length - 1;
while (start <= end) {
mid = (end - start) / 2 + start;
if (key < arr[mid]) {
end = mid - 1;
} else if (key > arr[mid]) {
start = mid + 1;
} else {
return mid;
}
}
return -1;
}