欢迎访问宙启技术站
智能推送

binarySearch函数来查找数组中指定元素的位置?

发布时间:2023-06-19 20:24:19

二分查找(binary search),也称折半查找,是一种在有序数组中查找某一特定元素的搜索算法。二分查找采用了分而治之的思想,每次将查找范围缩小一半,直到找到目标元素为止。

二分查找的时间复杂度是O(log n),所以它效率非常高,是一种非常常用的查找算法。

下面我们来实现一个名为binarySearch的函数,来查找数组中指定元素的位置。

函数的参数如下:

参数一:一个整型数组,数组中的元素是按照从小到大的顺序排列的。

参数二:指定元素的值。

函数的返回值:指定元素在数组中的下标。如果数组中不存在指定元素,则返回-1。

下面是函数的实现过程:

1.首先定义两个整型变量left和right,分别表示数组的左边界和右边界。

2.在while循环中,每次取left和right的中间值mid,然后将mid所在的元素与指定元素进行比较。

3.如果mid所在的元素等于指定元素,则返回mid的值。

4.如果mid所在的元素大于指定元素,则将right的值设为mid-1。

5.如果mid所在的元素小于指定元素,则将left的值设为mid+1。

6.如果left的值大于right的值,则说明数组中不存在指定元素,返回-1。

下面是函数的代码实现:

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

    int left = 0, right = size - 1;

    while (left <= right) {

        int mid = (left + right) / 2;

        if (arr[mid] == target) {

            return mid;

        } else if (arr[mid] > target) {

            right = mid - 1;

        } else {

            left = mid + 1;

        }

    }

    return -1;

}

上面的代码中,参数arr表示输入的数组,参数target表示指定元素的值。在函数内部,我们定义了两个整型变量left和right,赋值分别为0和size-1,这里的size表示数组的大小。

在while循环中,我们首先计算出left和right的中间值mid,然后将mid所在的元素与指定元素进行比较。如果mid所在的元素等于指定元素,则返回mid的值;如果mid所在的元素大于指定元素,则将right的值设为mid-1;如果mid所在的元素小于指定元素,则将left的值设为mid+1。

每次循环完之后,都需要重新计算出left和right的值,并再次进行比较,直到找到目标元素为止。如果left的值大于right的值,则说明数组中不存在指定元素,返回-1。

以上就是二分查找函数binarySearch的实现过程,它能够快速地查找有序数组中指定元素的位置。