查找算法相关代码

SearchFunc.h

cpp 复制代码
//
//  SearchFunc.hpp
//  FirstP
//
//  Created by 赫赫 on 2023/11/1.
//

#ifndef SearchFunc_hpp
#define SearchFunc_hpp

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string>
using namespace std;

#endif /* SearchFunc_hpp */

//顺序查找表结构
//时间复杂度O(n)
typedef struct{
    int *elem;      //动态数组基址
    int TableLen;   //表长度
}SSTable;

//顺序查找(哨兵方式,数据从下标1开始存,下标0的位置存放查找关键字,即"哨兵")
int Search_Seq(SSTable st,int key);

//折半查找,又称二分查找,仅适用于有序顺序表
//时间复杂度O(log(n))
int Binary_Search(SSTable st,int key);

SearchFunc.cpp

cpp 复制代码
//
//  SearchFunc.cpp
//  FirstP
//
//  Created by 赫赫 on 2023/11/1.
//  查找算法代码

#include "SearchFunc.hpp"

//顺序查找(哨兵方式,数据从下标1开始存,下标0的位置存放查找关键字,即"哨兵")
//时间复杂度O(n)
int Search_Seq(SSTable st,int key){
    st.elem[0]=key;
    int i;
    //从表尾开始向前查找
    for(i=st.TableLen;st.elem[i]!=key;i++);
    //如果i=0,那么就意味着没有查找到,否则返回数据存放下标
    return i;
}

//折半查找,又称二分查找,仅适用于有序顺序表(默认升序)
//时间复杂度O(log(n))
int Binary_Search(SSTable st,int key){
    int low=0,high=st.TableLen-1,mid;
    while(low<=high){
        mid=(low+high)/2;
        if(st.elem[mid]==key){
            return mid;
        }else if(st.elem[mid]>key){
            high=mid-1;
        }else{
            low=mid+1;
        }
    }
    return -1;//表示没有找到元素
}
相关推荐
良月澪二35 分钟前
CSP-S 2021 T1廊桥分配
算法·图论
wangyue41 小时前
c# 线性回归和多项式拟合
算法
&梧桐树夏2 小时前
【算法系列-链表】删除链表的倒数第N个结点
数据结构·算法·链表
QuantumStack2 小时前
【C++ 真题】B2037 奇偶数判断
数据结构·c++·算法
今天好像不上班2 小时前
软件验证与确认实验二-单元测试
测试工具·算法
wclass-zhengge2 小时前
数据结构篇(绪论)
java·数据结构·算法
Dylanioucn2 小时前
【分布式微服务云原生】探索Redis:数据结构的艺术与科学
数据结构·redis·分布式·缓存·中间件
何事驚慌2 小时前
2024/10/5 数据结构打卡
java·数据结构·算法
结衣结衣.2 小时前
C++ 类和对象的初步介绍
java·开发语言·数据结构·c++·笔记·学习·算法
大三觉醒push亡羊补牢女娲补天版2 小时前
数据结构之排序(5)
数据结构