C语言:函数int sortfind(int a[], int n,int x) 的功能是用折半查找法(二分查找法)从已按升序排列的数组a(共10个数)中查找x,返回x在a中的下标,若没找到则返回-1。
时间: 2024-05-04 11:18:42 浏览: 270
下面是函数int sortfind(int a[], int n,int x)的代码实现:
```c
int sortfind(int a[], int n, int x) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (a[mid] == x) {
return mid;
} else if (a[mid] < x) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
```
函数中,参数a[]表示已按升序排列的数组,n表示数组中元素的个数,x表示要查找的数。函数中使用了折半查找法(二分查找法)来查找x在a中的下标。首先将查找范围定为整个数组,然后每次将查找范围缩小一半,直到找到x或者查找范围为空。如果找到了x,则返回它在数组中的下标;否则,返回-1表示没找到。
相关问题
折半查找法c语言函数
以下是一个使用折半查找法的C语言函数示例:
```c
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)
left = mid + 1;
else
right = mid - 1;
}
return -1;
}
```
该函数接受一个已排序的整数数组,数组的左右边界以及要查找的元素x作为参数。函数返回x在数组中的索引,如果x不在数组中,则返回-1。
C语言:用二分查找法在一组数中查找指定的数。
二分查找法(也叫折半查找)是一种高效的查找算法,其时间复杂度为O(log n)。下面是使用C语言实现的二分查找算法:
```c
#include <stdio.h>
int binary_search(int arr[], int n, int x) {
int left = 0, right = n-1;
while (left <= right) {
int mid = left + (right-left)/2;
if (arr[mid] == x)
return mid;
else if (arr[mid] < x)
left = mid + 1;
else
right = mid - 1;
}
return -1; // 没有找到
}
int main() {
int arr[] = {2, 5, 8, 12, 16, 23, 38, 56, 72, 91};
int n = sizeof(arr)/sizeof(arr[0]);
int x = 23; // 要查找的数
int result = binary_search(arr, n, x);
if (result == -1)
printf("Element not found\n");
else
printf("Element found at index %d\n", result);
return 0;
}
```
在上面的代码中,`binary_search`函数接受三个参数:需要查找的数组`arr`、数组长度`n`和要查找的数`x`。函数返回值为要查找的数在数组中的下标,如果没有找到则返回-1。在`main`函数中,我们声明一个有序的整数数组,然后使用`binary_search`函数查找23这个数在数组中的位置。最后,根据函数返回值输出查找结果。
需要注意的是,二分查找算法只适用于已经排好序的数组。如果数组中的元素没有排序,则需要先进行排序才能使用二分查找算法。
阅读全文