通过二分查找在数组中查找与当前被查找值最相近的值得下标

博客介绍了通过二分查找在数组中查找与当前被查找值最相近的值的下标,涉及二分查找算法在数组数据结构中的应用,属于信息技术领域的算法应用内容。
二分查找算法用于在有序数组查找某个下标,其基本思想是从较大的有序数组查找某个时,先到中间目标比较。在升序数组中,若中间大于目标,目标在中间左边;反之在右边,采用循环方式逐一排查,到则返回下标,未到则返回特定标识(如 -1) [^3]。 以下是 Java 和 C 语言的实现示例: ### Java 实现 ```java public class BinarySearch { public static void main(String[] args) { int []arr={1,2,3,4,5,6,7,8}; System.out.println(find_index(arr,3)); System.out.println(find_index(arr,8)); System.out.println(find_index(arr,9)); } /** * 二分查找的实现 * * @param arr * @param num * @return */ public static int find_index(int []arr,int num){ int left=0; // 定义左边界 int right=arr.length-1; // 定义右边界 while (left <= right){ int mid=(left+right)/2; if (num > arr[mid]){ left=mid+1; } else if (num < arr[mid]){ right=mid-1; } else { return mid; } } System.out.println("没有到该元素"); return -1; } } ``` ### C 语言实现 ```c #include <stdio.h> #define N 100 int main() // 二分法前提查找据是有序的 { int arr[N] = { 0 }; for (int i = 0; i < N; i++) { arr[i] = i; } int n = 0; scanf("%d", &n); int right = 99; int left = 0; while (left <= right) { int mid = (right + left) / 2; if (arr[mid] == n) { printf("到了,下标是%d", mid); break; } if (arr[mid] > n) { right = mid - 1; } if (arr[mid] < n) { left = mid + 1; } } if (left > right) { printf("该字不存在"); } return 0; } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值