c语言非递归给定已按升序排好序的n个元素a[0:n-1],现要在这n个元素中找出一特定元素x 代码
时间: 2024-10-20 08:08:28 浏览: 21
算出从n个不同元素中取出m个元素(m≤n)的组合数——C语言代码
在C语言中,如果你想要在一个已排序的数组`a[0..n-1]`中查找特定元素`x`,并且不需要使用递归,可以采用二分查找法(Binary Search)。这种方法适用于有序数组,因为它通过不断缩小搜索范围来提高效率。
以下是一个简单的非递归实现:
```c
#include <stdio.h>
// 定义二分查找函数
int binarySearch(int arr[], int n, int x) {
int low = 0;
int high = n - 1;
// 当搜索范围包含至少一个元素
while (low <= high) {
int mid = low + (high - low) / 2; // 计算中间索引
// 如果中间元素正好是我们要找的
if (arr[mid] == x)
return mid;
// 如果中间元素大于目标值,则在左半部分继续查找
else if (arr[mid] > x)
high = mid - 1;
// 否则,在右半部分查找
else
low = mid + 1;
}
// 没找到返回-1作为默认标识
return -1;
}
int main() {
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; // 示例数组
int n = sizeof(a) / sizeof(a[0]);
int x = 5; // 要查找的元素
int result = binarySearch(a, n, x);
if (result != -1)
printf("Element found at index %d\n", result);
else
printf("Element not found in the array.\n");
return 0;
}
```
阅读全文