之前都是那c 或 c++ 写, 用swift 写一下 。
-
折半查找 限制 是必须是有序的数字, 每次 查找都减少一半。
func BinarySearch(data:[Int],x:Int) -> (Int){ var min:Int var beg:Int = 0 var size:Int = data.count while beg <= size { min = (beg+size)/2//取中间值 ///如果相等 返回 if x == data[min] { return min } ///如果在前面,修改size的位置 if x < data[min]{ size = min-1 ///如果在后面,beg 的位置 }else if x > data[min]{ beg = min+1 } } return -1 } let a:[Int] = [1,2,3,4,5,6,7,8] let p = BinarySearch(a, x: 8) print(p)
-
C++语言 版本, 递归比迭代效率低。 就写迭代
int BinarySearch(int data[],int x,int size){
int mid;//中间值
int beg = 0;//开始的值while (beg<=size) { mid = (beg+size)/2; if (x == data[mid]) return mid; if (x < data[mid]){ size = mid - 1; }else if (x > data[mid]){ beg = mid + 1; } } ///没找到 return -1; } int main() { int a[8] = {1,2,5,6,7,78,778,8888}; int b = BinarySearch(a, 1, 8); std::cout<< b << std::endl; return 0; }
个人博客: www.liangtongzhuo.com