高等樹的部分結束ㄌ,我們接下來可以進入比較簡單的章節,先來看一下我們耳熟能詳的 Search,受過前面的摧殘再看這邊的 search 應該會很開心?
Linear Search 非常簡單,我們在這邊就說明一下他的特性即可
在進入演算法之前,我們先來說明以下的前提
我們先思考一下,在 Sorted 的 array 中
依照這個觀念下去看就很好理解囉
我們分為遞迴或非遞迴兩種方式來進行演算法的撰寫
BinarySearchRec (int[] A, int k){ //target:k
int l = 0;
int r = A.length;
if(r>=l){
int mid = (l+r)/2;
if(a[mid] > target){
return BinarySearchRecursive(a,target,l,mid-1);
}
if(a[mid] < target){
return BinarySearchRecursive(a,target,mid+1,r);
}
if(a[mid] == target){
return mid;
}
}
return -1;
}
BinarySearchIter (int[] A, int k){ //target:k
int right = arr.length-1;
int left = 0; // last index
while(right>=left){
int mid = (left+right)/2;
if(target > arr[mid]){
left = mid+1;
}else if (target < arr[mid]){
right = mid-1;
}else{
return mid;
}
}
return -1; // means not found
}