数据结构:线性表查找的三种方式

news/2025/2/2 2:04:22 标签: 数据结构

只要是静态查找表即可

#define ElemType int
typedef struct {
ElemType *d;
int length;
}SSTable;

顺序查找 S(n)=O(1) 哨兵空间

int Search_Seq(SSTable t,ElemType key)
{
    t.d[0]=key;
    for (int i = t.length; i >0 ; i--) {
        if(t.d[i]==t.d[0])
        {
            return i;
        }
    }
    return 0;
}

折半查找(二分查找):要求必须是顺序存储,且元素内有序

非递归

int Search_bin_notDG(SSTable t,ElemType key)
{
    int low=1,high=t.length-1;
    while (low<=high)
    {
        int mid=(high+low)/2;
        if(t.d[mid]==key)
        {return mid;}
        else if(t.d[mid]>key)
        {
            high=mid-1;
        } else{
            low=mid+1;
        }
    }
    return 0;
}

递归

int Search_bin_DG(SSTable t,ElemType key,int high,int low)
{
    if(low>high)
    {return 0;}
    int mid=(low+high)/2;
    if(t.d[mid]==key)
    {return mid;}
    else if(t.d[mid]<key)
    {
        Search_bin_DG(t,key,high,mid+1);
    }
    else
    {
        Search_bin_DG(t,key,mid-1,low);
    }


}

分块查找:主要是利用索引表进行查找,块间有序,块内有无序决定块内查找方式


http://www.niftyadmin.cn/n/5839705.html

相关文章

stm32教程:EXTI外部中断应用

早上好啊大佬们&#xff0c;上一期我们讲了EXTI外部中断的原理以及基础代码的书写&#xff0c;这一期就来尝试一下用它来写一些有实际效能的工程吧。 这一期里&#xff0c;我用两个案例代码来让大家感受一下外部中断的作用和使用价值。 旋转编码器计数 整体思路讲解 这里&…

第11章:根据 ShuffleNet V2 迁移学习医学图像分类任务:甲状腺结节检测

目录 1. Shufflenet V2 2. 甲状腺结节检测 2.1 数据集 2.2 训练参数 2.3 训练结果 2.4 可视化网页推理 3. 下载 1. Shufflenet V2 shufflenet v2 论文中提出衡量轻量级网络的性能不能仅仅依靠FLOPs计算量&#xff0c;还应该多方面的考虑&#xff0c;例如MAC(memory acc…

hdfs:介绍三个脚本

1、jps-cluster.sh 如果我们想在Bigdata01 这台电脑上&#xff0c;查看整个集群的服务启动情况&#xff0c;可以使用这个脚本文件。 #!/bin/bash USAGE"使⽤⽅法&#xff1a;sh jps-cluster.sh" NODES("bigdata01" "bigdata02" "bigdata03…

Github 2025-01-31Java开源项目日报 Top10

根据Github Trendings的统计,今日(2025-01-31统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目10C项目1Kotlin项目1Bazel:快速、可扩展的多语言构建系统 创建周期:3564 天开发语言:Java协议类型:Apache License 2.0Star数量:2…

浅谈RTB场景中的动态出价算法

一、RTB与动态出价的基本概念 实时竞价&#xff08;Real-Time Bidding, RTB&#xff09; 是一种程序化广告交易方式&#xff0c;当用户访问网页或应用时&#xff0c;广告展示机会会通过实时拍卖机制出售给广告主。整个过程通常在毫秒级完成&#xff0c;涉及以下步骤&#xff1…

【cocos官方案例改】跳跃牢猫

自制游戏【跳跃牢烟】 案例解析 案例需求&#xff0c;点击鼠标控制白块左右。 资源管理器部分 在body创建一个2d精灵用作玩家。 在地下在创建一个2d精灵用来代表地面。 在body下挂在脚本。 全部脚本如下 &#xff08;在二次进行复刻时候&#xff0c;发现把代码复制上去无法…

Flink Connector 写入 Iceberg 流程源码解析_confluent icebergsinkconnector

// 添加 Writer 算子&#xff0c;有并行度SingleOutputStreamOperator<WriteResult> writerStream appendWriter(distributeStream, flinkRowType, equalityFieldIds);// 添加 Commit 算子&#xff0c;并行度固定为 1 SingleOutputStreamOperator<Void> committerS…

扩展无限可能:Obsidian Web Viewer插件解析

随着 Obsidian 1.8.3 正式版的发布&#xff0c;备受期待的官方核心插件——Web Viewer 也终于上线。本文将从插件启用、设置以及应用场景三个方面详细介绍如何使用这一新功能&#xff0c;和大家一起更好地利用 Obsidian 进行内容管理和知识整理。 插件启用 Web Viewer作为官方…