C:折半查找法(二分法)
主要用于已经做了排序的数字,时间复杂度:log2n 直接贴代码 #include <stdio.h> #include <stdlib.h> int search(int search_num, int a[], int right) { int left = 0; int ret = -1; int mid; while(right > left) { mid = (right + left) / 2; if (a[mid] == search_num) { ret = mid; break; } else if (a[mid] > search_num) { right = mid - 1; } else { left = mid + 1; } } return ret; } int a[9] = {1, 3, 5, 6, 8, 10, 12, 15, 17}; int main() { /*二分法搜索方法 思路: 1.设置左标和右标,建立search函数做二分运算 2.函数建立 循环终止条件是当right > left mid由(right + left) / 2得到 if mid = 所求; break if else mid > 所求; left = mid + 1 else mid < 所求 right = mid - 1 1, 3, 5, 6, 8, 10,