1.逐一查找法

把数组中的每一个数据逐个列出比较,若有i个数据,最多需要查找i次

2.二分法(折半查找法)

(1)大体思路:把要查找的数据反复与区间中位数比较,直至找出,若有i个数据,最多需要查找[log2i]+1次。([]为取整符号)

(2)具体做法:假设有数列arr[]{1,2,3,4,5,6,7,8,9,10},我们要查找的元素为4。

其中mid=[(left+right)/2

二分法查找数据_二分法

(3)代码实现:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
	int arr[] = { 2,4,6,8,10,12,14,16,18,20 };
	int k = 0;
	scanf("%d", &k);
	int left = 0;
	int right = sizeof arr / sizeof arr[0] - 1;
	int mid = 0;
	while (left <= right) {
		mid = (left + right) / 2;
		if (k == arr[mid]) {
			printf("已找到,下标为%d", mid);
			break;
		}
		else if (k > arr[mid]) {
			left = mid + 1;
		}
		else
			right = mid - 1;
	}
	if (k != arr[mid])
		printf("未找到");
	return 0;
}