二分查找字符
/* binsearch函数:在v[0<=v[1]<=v[2]<=...<=v[n-1]中查找x] */
int binsearch(int x, int v[], int n)
{
int low, high, mid;
low = 0;
high = n - 1;
while(low <= high){
mid = (low + high) / 2;
if(x < v[mid])
high = mid - 1;
else if(x > v[mid])
low = mid + 1;
else /* 找到了匹配的值 */
return mid;
}
return -1; /* 没有匹配的值 */
}
另一个版本
/* binsearch函数:在v[0<=v[1]<=v[2]<=...<=v[n-1]中查找x] */
int binsearch(int x, int v[], int n)
{
int low, high, mid;
low = 0;
high = n - 1;
mid = (low + high) / 2;
while(low <= high && x != v[mid]){
if(x < v[mid])
high = mid - 1;
else
low = mid + 1;
mid = (low + high) / 2;
}
if(x == v[mid])
return mid; /* 找到了匹配的值 */
else
return -1; /* 没有匹配的值 */
}
这两种方案的执行时间几乎相同,但是第二种失掉了代码的可读性,原有代码更容易阅读和理解。
分享到:
相关推荐
C语言笔记总结 以下是对C语言笔记的总结,该笔记记录了一个牛人学习C语言知识点,挺全的。 一、C语言基础 * C语言源文件的扩展名是`.c` * C++源文件的扩展名是`.cpp` * 头文件的扩展名是`.h` * 库文件的扩展名是`...
### Linux C语言笔记知识点 #### 一、GCC介绍与GDB工具 - **GCC (GNU Compiler Collection)**: 是一个用于编译C/C++等语言的标准工具链。它提供了丰富的功能来帮助开发者进行高效的代码编译。 - **编译命令**: `...
常见的算法包括排序(冒泡、选择、插入、快速、归并等)、查找(线性、二分等)、图和树算法、动态规划等。学习者应通过编写代码来实践这些算法,提高编程能力。 总结,这份笔记集合了C语言的基础语法、指针操作和...
同时,结合算法学习,比如排序(冒泡排序、选择排序、插入排序、快速排序、归并排序等)、查找(线性查找、二分查找等)会进一步提高编程能力。 此外,文件操作也是C语言中的一个重要部分。学习如何打开、读取、...
- **二分查找**:适用于已排序的数组,每次查找都将查找范围减半,时间复杂度为O(log n)。 - **哈希查找**:通过哈希函数将元素映射到表中特定位置,查找速度非常快,理想情况下达到O(1)。 3. **递归与分治** - ...
根据给定的文件信息,以下是对“C 语言结构体笔记”中提到的关键知识点的详细解释: ### C语言中的结构体(struct) 结构体是C语言中一种复合数据类型,允许我们将不同类型的数据组合在一起,形成一个整体。这在处理...
查找算法包括顺序查找、二分查找、哈希查找等,其中二分查找适用于有序数组,而哈希查找在哈希表中提供近乎常数时间的查找速度。 九、字符串处理 字符串是字符的序列,C语言中常用字符数组来表示字符串。字符串处理...
9. 查找:查找是数据结构中寻找特定元素的过程,包括顺序查找、二分查找、哈希表查找等方法。理解不同查找算法的时间复杂度对优化程序至关重要。 10. 排序:排序是将一组数据按特定顺序排列的过程。常见的排序算法...
- 二分查找:适用于有序列表,通过比较中间元素来确定目标值可能存在的范围,不断缩小搜索范围直至找到目标值或确认不存在。 3. **链表操作**: - 链表的插入、删除和反转等操作也是C语言中常见的算法问题。例如...
- 查找算法:掌握线性查找、二分查找等基本查找方法。 - 树与图:了解二叉树、平衡树、图的表示和常见操作。 8. **编译与链接** - 编译过程:理解预处理、编译、汇编、链接的过程。 - 静态与动态链接:了解静态...
3. 算法基础:学习排序算法(如冒泡排序、快速排序)、查找算法(如线性查找、二分查找)等,为后续的算法学习打下基础。 总之,计算机基础知识笔记二级C全面涵盖了从计算机原理到C语言编程的基础知识,通过学习,...
《谭浩强C语言全书》是一本深受中国程序员喜爱的C语言教程,它为初学者提供了全面且易懂的C语言学习资源。本书详细介绍了C语言的基础概念、语法结构以及编程技巧,是学习C语言的必备参考资料。下面将根据标题、描述...
分治策略是递归的一种应用,将大问题分解为小问题来解决,如快速排序、二分查找。 7. **错误处理与调试**: 使用`assert`宏进行断言检查,帮助定位程序错误。学会利用`printf`进行调试输出,理解并运用`gdb`等调试...
- **查找算法**:如线性查找、二分查找、哈希查找,以及各种数据结构中的查找策略。 - **图论算法**:深度优先搜索(DFS)、广度优先搜索(BFS)、最短路径算法(Dijkstra、Floyd等)。 - **动态规划**:讲解基础...
- 字符串在C语言中通常以NUL字符(`\0`)结尾,这标志着字符串的结束。 - NUL字符与NULL指针不同,后者用于表示空指针。 5. **函数参数传递数组长度**: - 当传递数组给函数时,通常不需要显式地提供数组长度。...
1. **排序与搜索**:包括快速排序、归并排序、二分查找等经典算法,这些都是程式设计的基础,对于处理大量数据尤其重要。 2. **图论与网络流**:如最短路径问题(Dijkstra算法、Floyd-Warshall算法)、最小生成树...
根据提供的文件信息,我们可以推断出这是一份关于C++程序设计的学习资料,具体来说是《C++程序设计教程第二版》这本书的学习笔记。虽然给定的部分内容仅包含了一些图片占位符和数字(可能是指页码),但我们可以基于...
2. **查找算法**:如线性查找、二分查找、哈希查找等,它们在数据检索和定位上发挥着关键作用。 3. **图算法**:如深度优先搜索(DFS)、广度优先搜索(BFS)、Dijkstra算法、Floyd-Warshall算法,这些在解决网络...
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...