一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

二分(拆半)查找代码模板(C/C++/Java/Python多版本)

时间:2026-08-08 08:22:02 编辑:袖梨 来源:一聚教程网

二分(拆半)查找代码模板(C/C++/Java/Python多版本)需要先看清适用场景和关键步骤,避免只记结论却忽略实际限制。

二分(拆半)查找是一种在有序数组中快速查找目标值的高效算法。它通过不断将搜索范围减半来实现:首先与数组中间元素比较,如果目标值等于中间元素则找到;如果目标值较小,则在左半部分继续查找;如果目标值较大,则在右半部分继续查找。如此重复,直到找到目标值或搜索范围为空。

二分(拆半)查找代码模板(C/C++/Java/Python多版本)

1. C/C++版代码:

#include <stdio.h>// 二分查找函数int binarySearch(int arr[], int size, int target){    int left = 0;    int right = size - 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; // 如果未找到目标值,返回-1}

2. Java版代码:

import java.util.Scanner;public  class Main {    // 二分查找函数    public static int binarySearch(int[] arr, int size, int target) {        int left = 0;        int right = size - 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; // 如果未找到目标值,返回-1    }     public static void main(String[] args) {        int r;        int[] a = {12, 34, 35, 54, 85, 167, 265, 343, 399, 584};        r = binarySearch(a, 10, 584);        System.out.println(r);    }}

3. Python版代码:

def binary_search(arr, size, target):    left = 0    right = size - 1     while left <= right:        mid = left + (right - left) // 2  # 防止溢出         if arr[mid] == target:            return mid  # 找到目标值,返回索引        elif arr[mid] < target:            left = mid + 1  # 向右半部分继续查找        else:            right = mid - 1  # 向左半部分继续查找     return -1  # 如果未找到目标值,返回-1 if __name__ == "__main__":    a = [12, 34, 35, 54, 85, 167, 265, 343, 399, 584]    r = binary_search(a, len(a), 265)    print(r)

热门栏目