软考
APP下载

c语言二分查找简单代码

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循环和不断缩小查找范围的方式进行查找,并最终返回目标元素所在的位置。在实际应用中,可以通过该算法进行查找和排序操作,提高程序的效率和运行速度。

备考资料 免费领取:软件设计师报考指南+考情分析+思维导图等 立即下载
真题演练 精准解析历年真题,助你高效备考! 立即做题
相关阅读
软件设计师题库