查找算法相关代码

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;//表示没有找到元素
}
相关推荐
yongui4783438 分钟前
MATLAB的指纹识别系统实现
算法
高山上有一只小老虎39 分钟前
翻之矩阵中的行
java·算法
jghhh011 小时前
RINEX文件进行卫星导航解算
算法
爱思德学术1 小时前
中国计算机学会(CCF)推荐学术会议-A(计算机科学理论):LICS 2026
算法·计算机理论·计算机逻辑
CVHub1 小时前
多模态图文训推一体化平台 X-AnyLabeling 3.0 版本正式发布!首次支持远程模型推理服务,并新增 Qwen3-VL 等多款主流模型及诸多功能特性,等
算法
hoiii1871 小时前
MATLAB实现Canny边缘检测算法
算法·计算机视觉·matlab
qq_430855882 小时前
线代第二章矩阵第四课:方阵的幂
算法·机器学习·矩阵
roman_日积跬步-终至千里2 小时前
【计算机设计与算法-习题2】动态规划应用:矩阵乘法与钢条切割问题
算法·矩阵·动态规划
kupeThinkPoem2 小时前
计算机算法导论第三版算法视频讲解
数据结构·算法
sali-tec2 小时前
C# 基于halcon的视觉工作流-章67 深度学习-分类
开发语言·图像处理·人工智能·深度学习·算法·计算机视觉·分类