c语言实现三分查找算法
时间: 2024-10-10 13:04:02 浏览: 14
三分查找也叫折半查找,它是一种高效的搜索算法,适用于已排序数组。在C语言中,它的基本思想是将数组分为三部分,然后确定目标值可能在哪一部分。以下是简单的C语言实现:
```c
#include <stdio.h>
// 定义三分查找函数
int ternarySearch(int arr[], int l, int r, int x) {
if (r >= l) {
// 计算中间点
int mid1 = l + (r - l) / 3;
int mid2 = r - (r - l) / 3;
// 检查元素是否在第一部分、第二部分或第三部分
if (arr[mid1] == x)
return mid1;
else if (arr[mid2] == x)
return mid2;
else if (x < arr[mid1])
return ternarySearch(arr, l, mid1 - 1, x);
else if (x > arr[mid2])
return ternarySearch(arr, mid2 + 1, r, x);
else
return ternarySearch(arr, mid1 + 1, mid2 - 1, x); // 如果x在中间部分,再分别查找左右两部分
}
// 元素不存在于数组中
return -1;
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 6; // 搜索的目标值
int result = ternarySearch(arr, 0, n - 1, x);
if (result != -1)
printf("Element found at index %d", result);
else
printf("Element not found in the array");
return 0;
}
```
阅读全文