二分查找函数汇总

本文探讨了如何通过二分查找策略解决猜数字游戏,揭示了使用二分查找能将平均尝试次数降低至10次。接着介绍了二分查找函数的实现,包括`BinarySearch`函数,它在已排序数组中查找元素并返回下标,以及`LowerBound`函数,用于寻找比给定值小的下标最大的元素。文章强调了在实现中防止整数溢出的细节处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:A心里想一个1-1000之间的数,B来猜,可以问问题,A只能回答是或否。怎么猜才能问的问题次数最少?

思路:是1吗?是2吗?…是999吗? 平均要问500次 大于500吗?大于750吗?大于625吗? …每次缩小猜测范围到上次的一半
只需要 10次

二分查找函数

写一个函数BinarySeach,在包含size个元素的、从小到大排序的int数组a里查找元素p,如果找到,则返回元素下标,如果找不到,则返回-1。要求复杂度O(log(n))

下面附核心代码:

    int BinarySearch(int a[],int size,int p)
    {
    int L = 0; //查找区间的左端点
    int R = size - 1; //查找区间的右端点
    while( L <= R) { //如果查找区间不为空就继续查找
    int mid = L+(R-L)/2; //取查找区间正中元素的下标
    if( p == a[mid] )
    return mid; else if( p > a[mid])
    L = mid + 1; //设置新的查找区间的左端点
    
    else
    
    }
    
    R = mid - 1; //设置新的查找区间的右端点
    
    return -1;
    } //复杂度O(log(n))

写一个函数LowerBound,在包含size个元素的、从小到大排序的int数组a里查找比给定整数p小的,下标最大的元素。找到则返回其下标,找不到则返回-1

    int LowerBound(int a[],int size,int p)	//复杂度O(log(n))
    {
    int L = 0; //查找区间的左端点
    int R = size - 1; //查找区间的右端点
    int lastPos = -1; //到目前为止找到的最优解
    while( L <= R) { //如果查找区间不为空就继续查找
    int mid = L+(R-L)/2; //取查找区间正中元素的下标
    if(a[mid]>= p)
    R = mid - 1;
    
    else {
    
    
    }
    }
    
    
    lastPos = mid; L = mid+1;
    
    return lastPos;
    }	

二分查找函数

注意: int mid = (L+R)/2; //取查找区间正中元素的下标

为了防止 (L+R)过大溢出:

int mid = L+(R-L)/2;

<think>好的,我需要处理用户关于Python函数汇总列表的请求。首先,用户提到两个引用,引用1是关于100多个Python函数汇总,引用2是关于内置函数的文档。用户的需求是查找Python函数汇总列表,所以我应该结合这两个引用,提供结构清晰的回答。 首先,根据引用1,用户可能需要基础到进阶的函数分类,比如输入输出、数据处理、文件操作等。引用2提到了内置函数,比如lambda表达式和一些内置属性,这可能涉及到Python的内置函数列表。因此,我应该先介绍内置函数,然后分类其他常用函数,并给出示例。 接下来,需要确保回答符合用户的要求:结构清晰,分步骤解决问题,引用正确。同时,按照系统指令,数学公式用$...$,但这里可能用不上,不过要检查是否有需要的地方。另外,生成相关问题,可能涉及函数的学习资源、常用函数推荐或内置函数的具体用法。 需要确认是否引用的内容正确对应。例如,引用1提到了12个板块的100多个函数,引用2提到了内置函数返回列表元组和lambda表达式。所以在回答中,内置函数部分可以引用引用2,其他分类引用引用1。 最后,生成相关问题时要围绕Python函数汇总,可能的问题包括如何查找内置函数、如何记忆常用函数、是否有第三方库的函数汇总等。确保问题与用户的需求相关,并且帮助用户进一步探索。</think>### Python 函数汇总列表整理 以下是针对Python常用函数的分类整理,结合基础到进阶的应用场景,帮助您系统化掌握函数用法。 --- #### 一、Python内置函数(核心) 1. **输入输出函数** - `print()`: 输出内容,支持格式化字符串 - `input()`: 获取用户输入 ```python name = input("请输入姓名:") print(f"你好, {name}!") ``` 2. **数据类型转换** - `int()`, `float()`, `str()`, `list()`: 类型转换 - `type()`: 查看变量类型 ```python num_str = "123" num = int(num_str) # 转换为整数 ``` 3. **数学运算** - `abs()`, `pow()`, `round()`: 绝对值、幂运算、四舍五入 - `sum()`, `max()`, `min()`: 统计计算 ```python numbers = [1, 2, 3] total = sum(numbers) # 结果为6 ``` 4. **迭代与序列操作** - `range()`: 生成整数序列 - `len()`, `sorted()`, `reversed()`: 长度、排序、反转 ```python for i in range(5): # 生成0-4的序列 print(i) ``` **完整内置函数列表**可通过`dir(__builtins__)`查看[^2]。 --- #### 二、常用第三方库函数(扩展) 1. **数据处理** - **NumPy**: `np.array()`, `np.mean()`, `np.reshape()` - **Pandas**: `pd.read_csv()`, `df.groupby()`, `df.merge()` 2. **文件与系统操作** - `os.mkdir()`: 创建目录 - `shutil.copy()`: 复制文件 3. **正则表达式** - `re.match()`, `re.findall()`: 匹配与搜索模式 ```python import re text = "Python 3.10 released" result = re.findall(r'\d+\.\d+', text) # 匹配版本号,返回['3.10'] ``` --- #### 三、学习建议 1. **查阅官方文档**:Python官网提供[内置函数完整列表](https://docs.python.org/3/library/functions.html) 2. **实践记忆法**:通过实际项目练习函数用法,如用`map()`和`filter()`处理列表 3. **整理笔记**:按功能分类记录函数,例如字符串处理、文件操作等模块[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值