C/C++实用算法代码集:二分查找、子串计数与排序示例

需积分: 9 3 下载量 149 浏览量 更新于2024-11-24 收藏 38KB DOC 举报
本篇文章主要介绍了C和C++语言中的一些常用算法的代码实现,旨在帮助开发者节省编写和理解基础算法的时间。以下内容涵盖了二分查找、查找子串出现次数、查找子串首次出现位置以及两种排序算法——快速排序和冒泡排序。 1. **二分查找** (Binary Search): 二分查找是一种高效的查找算法,适用于已排序的数组或列表。`bfind`函数实现了二分查找,其核心逻辑是不断将搜索范围缩小,通过比较中间元素与目标值的关系来决定是向左半部分还是右半部分继续搜索。当找到目标值时返回其索引,未找到则返回-1。此函数适用于对有序数组进行查找操作。 2. **查找子串出现次数** (Substring Counting): `count1` 函数用于计算字符串`s1`中子串`s2`出现的次数。它遍历`s1`,每次找到一个完整的`s2`子串就计数加一。当遇到`s2`结束或`str`中字符不匹配时停止比较,最后返回计数结果。 3. **查找子串首次出现位置** (Substring Search): `find`函数实现了在一个字符串`s1`中查找另一个字符串`s2`首次出现的位置。首先检查`s1`是否比`s2`短,然后逐个字符比较,若找到匹配,则记录当前位置;当不匹配时跳出内层循环。如果没有找到,则返回`s1`的长度,表示没有找到子串。 4. **快速排序** (Quick Sort): 快速排序是一种高效的排序算法,通过选取一个基准值(这里为数组末尾的元素),将数组分为两部分,一部分所有元素小于基准,另一部分所有元素大于等于基准。然后递归地对这两部分进行同样的操作。`partition`函数实现了分区操作,`qsort`函数则是递归调用,处理整个排序过程。 5. **冒泡排序** (Bubble Sort): 冒泡排序是一种简单的排序算法,通过不断交换相邻的元素,逐步把较大的元素“浮”到数组的末尾。`buble`函数实现了冒泡排序的过程,它使用嵌套循环,外层控制轮数,内层进行相邻元素的比较和交换。 这些代码片段提供了C和C++编程中基本算法的实践示例,对理解和应用这些算法非常有帮助,无论是学习阶段还是实际项目开发中,它们都是提高编程效率的重要工具。通过掌握这些核心算法,开发者可以更好地优化代码,并提升程序的性能。