c语言演示数据结构折半查找
时间: 2023-08-24 21:05:01 浏览: 48
好的,以下是一个简单的 C 语言程序,演示了如何使用折半查找算法来查找一个有序数组中的元素:
```c
#include <stdio.h>
// 折半查找函数
int binarySearch(int arr[], int left, int right, int x) {
while (left <= right) {
int mid = left + (right - left) / 2;
// 如果元素在中间位置
if (arr[mid] == x)
return mid;
// 如果元素比中间位置的数小,只需要在左半部分查找
if (arr[mid] > x)
right = mid - 1;
// 如果元素比中间位置的数大,只需要在右半部分查找
else
left = mid + 1;
}
// 如果元素不在数组中,返回 -1
return -1;
}
int main() {
int arr[] = { 2, 3, 4, 10, 40 };
int n = sizeof(arr) / sizeof(arr[0]);
int x = 10;
int result = binarySearch(arr, 0, n - 1, x);
if (result == -1)
printf("元素不在数组中\n");
else
printf("元素在数组中的索引是 %d\n", result);
return 0;
}
```
在上面的代码中,我们定义了一个 `binarySearch()` 函数,该函数使用折半查找算法在有序数组中查找元素。然后在 `main()` 函数中创建了一个有序数组 `arr`,并调用了 `binarySearch()` 函数来查找元素 `10`。如果元素存在于数组中,函数将返回元素的索引;否则,它将返回 `-1`。