C语言--指针--简洁版折半查找(二分法查找)

本文介绍如何使用C语言和指针实现简洁的二分查找算法,通过指针操作提升查找效率。
摘要由CSDN通过智能技术生成

代码区

#include<stdio.h>
#define N 5
int search(int a[N],int n)
{
   
 int low=0,high=N-1,mid,flag=0;
 while(low<=high)
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
二分法查找是一种高效的查找算法,可以在有序数组中快速定位目标值。其基本思想是将有序数组分成两半,判断目标值在哪一半,然后继续在那一半中进行查找,重复这个过程直到找到目标值或者确定目标值不存在。 以下是C语言实现二分法查找的示例代码: ```c #include <stdio.h> int binarySearch(int arr[], int n, int target) { int left = 0, right = n - 1; 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, 3, 5, 7, 9}; int n = sizeof(arr) / sizeof(arr[0]); int target = 3; int index = binarySearch(arr, n, target); if (index == -1) { printf("The target doesn't exist in the array.\n"); } else { printf("The target is at index %d.\n", index); } return 0; } ``` 在该示例代码中,`binarySearch` 函数接收一个有序数组 `arr`、数组长度 `n` 和目标值 `target`,返回目标值在数组中的下标(从0开始),如果目标值不存在,则返回-1。在函数内部,使用 `left` 和 `right` 两个指针分别指向数组的左右两端,然后使用 `while` 循环进行二分查找,直到找到目标值或者确定目标值不存在。具体的查找过程如下: 1. 计算中间位置 `mid = (left + right) / 2`; 2. 如果 `arr[mid] == target`,说明已经找到目标值,返回 `mid`; 3. 如果 `arr[mid] < target`,说明目标值在右半部分,令 `left = mid + 1`; 4. 如果 `arr[mid] > target`,说明目标值在左半部分,令 `right = mid - 1`; 5. 重复上述过程直到找到目标值或者确定目标值不存在。 在主函数中,我们定义了一个有序数组 `arr`,长度为 `n`,并且定义了目标值 `target` 为3。然后调用 `binarySearch` 函数进行查找,并输出结果。运行程序后,输出结果为 `The target is at index 1.`,表示目标值3在数组中的下标为1。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值