用C语言写二分法查找算法
时间: 2023-03-13 18:30:46 浏览: 98
我并不熟悉C语言,但是我可以给你提供一些有关二分法查找的基本资料:二分法查找是一种在有序数组中搜索某一特定元素的搜索算法,它采用了分治的思想,将数组分为两个部分,并且每次只搜索其中一个部分,直到找到所要搜索的元素为止。
相关问题
用C语言写一个二分法查找算法
```
#include<stdio.h>
int binary_search(int arr[], int left, int right, int target) {
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 5;
int result = binary_search(arr, 0, n - 1, target);
if (result == -1) {
printf("Element is not present in array\n");
} else {
printf("Element is present at index %d\n", result);
}
return 0;
}
```
c语言使用二分法查找元素位置
二分法查找也被称为折半查找,它是一种高效的查找算法。在有序数组中查找元素时,可以使用二分法查找,其时间复杂度为O(log n)。
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)
left = mid + 1;
else
right = mid - 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("Element is not present in array");
else
printf("Element is present at index %d", result);
return 0;
}
```
在以上代码中,binarySearch函数接收4个参数:数组arr,数组左侧下标left,数组右侧下标right和要查找的元素x。该函数首先计算中间元素的下标,然后比较中间元素与要查找的元素的大小关系,如果相等则返回中间元素下标,如果中间元素小于要查找的元素,则在数组右侧继续查找,否则在数组左侧继续查找。如果找不到要查找的元素,则返回-1。