1 Star 0 Fork 0

郑玉强/dataStructure

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
search.hpp 1.24 KB
一键复制 编辑 原始数据 按行查看 历史
郑玉强 提交于 2024-10-12 22:02 +08:00 . 完成二叉搜索树的代码编写
#pragma once
/// <summary>
/// 顺序查找,O(n) = T(n)
/// </summary>
/// <typeparam name="TData">数组元素类型模板参数</typeparam>
/// <param name="list">数据容器(数组)</param>
/// <param name="size">容器(数组)长度</param>
/// <param name="data">待查找数据</param>
/// <returns>待查找数据在容器(数组)中的下标</returns>
template <typename TData>
int sequentialSearch(TData* list, int size, TData data)
{
// 空列表处理
if (size == 0)
return -1;
// 遍历查找
int i = 0;
while (i < size && list[i] != data)
{
i++;
}
// 返回结果
if (i == size)
return -1;
return i;
}
/// <summary>
/// 二分查找,数组必须是升序排序好的,O(n) = T(logn)
/// </summary>
/// <typeparam name="TData">数组元素类型模板参数</typeparam>
/// <param name="list">数据容器(数组)</param>
/// <param name="size">容器(数组)长度</param>
/// <param name="data">待查找数据</param>
/// <returns>待查找数据在容器(数组)中的下标</returns>
template <typename TData>
int binarySearch(TData* list, int size, TData data)
{
// 初始化左右边界
int left = 0;
int right = size - 1;
// 查找
while (left <= right)
{
int mid = (left + right) / 2;
if (data > list[mid])
left = mid + 1;
else if (data < list[mid])
right = mid - 1;
else
return mid;
}
// 没找到
return -1;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/zheng-yuqiang_lyg_cn/data-structure.git
git@gitee.com:zheng-yuqiang_lyg_cn/data-structure.git
zheng-yuqiang_lyg_cn
data-structure
dataStructure
dev01

搜索帮助