1. 二分法
二分查找是一个时间效率极高的算法,尤其是面对大量的数据时,其查找效率是极高,时间复杂度是log(n)。
主要思想就是不断的对半折叠,每次查找都能除去一半的数据量,直到最后将所有不符合条件的结果都去除,只剩下一个符合条件的结果。
2. 时间复杂度:
二分法的时间复杂度是log(n)。
3.二分法实现代码
#include <stdio.h>
int binarySearch(int arr[], int l, int r, int x) {
while (l <= r) {
int mid = l + (r - l) / 2;
if (arr[mid] == x) {
return mid;
} else if (arr[mid] < x) {
l = mid + 1;
} else {
r = mid - 1;
}
}
return -1; // 未找到元素
}
int main() {
int arr[] = {2, 4, 6, 8, 10, 12};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 8;
int result = binarySearch(arr, 0, n - 1, x);
if (result == -1) {
printf("元素 %d 不在数组中\n", x);
} else {
printf("元素 %d 的下标为 %d\n", x, result);
}
return 0;
}