c语言折半查找算法怎么实现
折半查找也称为二分查找,它要求被查找的数组是有序的。
实现折半查找算法可以按照以下步骤:
定义一个函数,接受一个有序数组和要查找的目标元素作为参数。
初始化两个指针,一个指向数组的起始位置,一个指向数组的结束位置。
使用一个循环,判断起始位置是否小于等于结束位置。
在循环中,将中间位置的索引计算为起始位置与结束位置之和的一半。
比较中间位置的元素与目标元素的大小:
如果中间位置的元素等于目标元素,返回中间位置的索引。
如果中间位置的元素大于目标元素,将结束位置指针移到中间位置的前一个位置。
如果中间位置的元素小于目标元素,将起始位置指针移到中间位置的后一个位置。
如果循环结束没有找到目标元素,返回-1表示查找失败。
下面是一个示例代码:
#include <stdio.h>
int binarySearch(int arr[], int target, int start, int end) {
while (start <= end) {
int mid = start + (end - start) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] > target) {
end = mid - 1;
} else {
start = mid + 1;
}
}
return -1;
}
int main() {
int arr[] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
int target = 12;
int n = sizeof(arr) / sizeof(arr[0]);
int result = binarySearch(arr, target, 0, n - 1);
if (result == -1) {
printf("Element not found\n");
} else {
printf("Element found at index %d\n", result);
}
return 0;
}
以上代码在一个有序数组中查找目标元素12,并输出其索引。如果目标元素存在于数组中,则输出对应索引;否则输出"Element not found"。
阅读剩余
THE END