希赛考试网
首页 > 软考 > 软件设计师

c语言二分查找简单代码

希赛网 2024-02-09 10:37:52

C语言是一门比较底层的编程语言,它对于计算机原理和操作系统底层结构有着更深入的了解和掌握。在编程中,经常需要对数据进行查找和排序操作,其中二分查找是一种常见的算法。本篇文章将从多个角度分析C语言二分查找的简单代码,让读者更好地理解和掌握这一算法。

一、C语言二分查找介绍

二分查找(Binary Search),又称为折半查找,是一种在有序数组中查找特定元素的算法。其核心思想是将原数组不断二分,查找目标元素所在的范围,直到范围缩小到只有一个元素或者目标元素被找到为止。由于每次二分都会使查找范围减少一半,在最坏情况下(即目标元素不在数组中),时间复杂度为O(logn)。

二、C语言二分查找简单代码

以下是C语言中一个简单的二分查找代码示例:

```c

int binarySearch(int arr[], int left, int right, int target) {

int mid;

while (left <= right) {

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;

}

```

三、代码解析

这段代码中,将数组初始范围left和right传入函数,还有需要查找的目标元素target。通过while循环进行二分查找,每次将范围缩小到中间位置mid。如果中间位置的值等于目标元素,直接返回mid;如果中间位置的值小于目标元素,说明目标元素在右侧范围,则将left更新到mid的右侧;如果中间位置的值大于目标元素,说明目标元素在左侧范围,则将right更新到mid的左侧。如果查找完毕仍未找到目标元素,则返回-1。

四、代码实践

以下是对该二分查找函数进行测试的代码实现:

```c

#include

int binarySearch(int arr[], int left, int right, int target);

int main() {

int arr[] = {1, 2, 3, 4, 5, 6, 7};

int target = 3;

int index = binarySearch(arr, 0, 6, target);

if (index == -1) {

printf("target not found\n");

} else {

printf("target found at index %d\n", index);

}

return 0;

}

int binarySearch(int arr[], int left, int right, int target) {

int mid;

while (left <= right) {

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;

}

```

运行结果为:

```

target found at index 2

```

可以看到,该二分查找函数成功地找到了目标元素3,并返回了其下标2。

五、总结

C语言二分查找是一种常用的算法,通过不断将原数组二分,查找目标元素所在的范围,可以使时间复杂度降为O(logn)。该算法的代码实现相对简单,通过while循环和不断缩小查找范围的方式进行查找,并最终返回目标元素所在的位置。在实际应用中,可以通过该算法进行查找和排序操作,提高程序的效率和运行速度。

微信扫一扫,领取最新备考资料


软考.png


软件设计师 资料下载
备考资料包大放送!涵盖报考指南、考情深度解析、知识点全面梳理、思维导图等,免费领取,助你备考无忧!
立即下载
软件设计师 历年真题
汇聚经典真题,展现考试脉络。精准覆盖考点,助您深入备考。细致解析,助您查漏补缺。
立即做题

软考报考咨询

微信扫一扫,定制学习计划