分享好友 最新动态首页 最新动态分类 切换频道
数组 查找 对应索引
2024-12-26 11:10


数组 查找 对应索引



  • 数组中判断元素是否存在的时间复杂度一般为O(n),是因为大家一般的做法都是遍历一遍数组看看所要找的数据是否存在。
  • 这里介绍一种利用key的唯一性来实现的时间复杂度为O(1)的判断元素是否存在的方法
  • 在c语言里这种方法经常使用,这里介绍在shell的语法中我们如何利用关联数组和key值唯一性来提高脚本的执行效率







O(n2)的普通搜索





O(1)的关联数组搜索


Shell Associative Array
  bashi没有原生的对于类似hash table的支持,不像perl或python.
下标数组元素是通过数组下标(数组下标可以是算术表达式,其结果必须是一个整数)来访问的,但是这种访问方式在表达某些关联性很强的数据时会存在限制。
shell 提供了另外一种数组,其可以使用任意的字符串作为下标(不必是整数)来访问数组元素。这种数组叫做关联数组(associative array)。
关联数组的下标和值称为键值对,它们是一一对应的关系。在关联数组中,键是唯一的,值可以不唯一。
shell 的关联数组和 perl 的关联数组在实现功能上是一样的。在 perl 中,关联数组有时候称为哈希(hash)。

定义关联数组
shell 的关联数组和 shell 的下标数组在定义和使用上完全一样,只是在索引上有区别。
需要注意的是,在使用关联数组之前,需要使用命令 declare -A array 进行显示声明。



下标数组元素是通过数组下标(数组下标可以是算数表达式,其结果必须是一个整数)来访问的,但是这种访问方式在表达某些关联性很强的数据时会存在限制





类似于php,shell也提供了一种数组,其可以使用任意的字符串作为下标来访问数组元素,这种数组叫关联数组,关联数组也是php的精髓所在





注意,shell中定义关联数组需要声明,声明语法:



    示例 1


    在命令提示符下输入 https://blog.51cto.com/u_14457/test.sh,执行结果如下:





    操作关联数组的语法


    关联数组的操作语法和数组的操作语法完全一致,如下列出常见的操作。




    示例 2


    test.sh 文件的内容如下




    在命令提示符下输入 https://blog.51cto.com/u_14457/test.sh,执行结果如下:






    数组:


    下标数组

    直接赋值



    圆括号顺序赋值





    前提:关联数组需要进行语法声明





    1. declare -A array_name  



    赋值







    数组长度

    命令



    1. 用${#数组名[*或@]}可以获得数组长度  

    数组value读取

    命令



    1. 用${下标数组名[下标]} 或 ${关联数组[key]}  



    注:下标是*或者@可以得到整个数组的内容








    数组键值(key)读取

    命令



    1. 用${!数组名[*或@]}  










    最新文章
    玩转serv00虚拟主机(一):零成本搭建wordpress个人博客&入门
    不少童鞋在搭建博客、alist、图床等各类web服务的时候苦于云的成本望而却步,但其实搭建web服务也可以用虚拟主机,不少厂商都有免费的虚拟主机,但对于很多童鞋可能是第一次听说虚拟主机,这里就开一个新的系列,玩转serv00家的免费虚拟主
    考研民商法学专业容易上岸的大学怎么选择
    在准备考研的过程中,选择合适的学校是至关重要的一步。尤其是对于民商法学专业的考生来说,如何找到一所适合自己的学校更是需要认真考虑的事情。本文将为大家提供一份考研选择民商法学学校指南,帮助你在众多院校中做出明智的决定。首先,
    老照片如何修复成高清?四个老照片修复教程全揭晓
    让老照片焕发新生:给你分享老照片修复的精彩工具 提到老照片,很多人心中总是涌动着温暖的回忆。家人们,是否曾经翻阅过那些泛黄的照片,感受到那份岁月的沉淀?但时间的流逝总会导致照片的劣化,很多细节模糊甚至消失。那么,我们该如何
    四川甜城旅游景点大全:热门景点排名及详细介绍
    四川甜城即四川省内江市以其独有的地理位置和丰富的历史文化遗产而闻名遐迩。内江不仅是的“糖都”也是甜城文化的发源地。这里既有壮丽的自然景观又有深厚的历史文化底蕴是一个不可多得的旅游胜地。从古朴典雅的隆昌石牌坊到秀美宁静的甜城
    打破传统边界:类似WU界SaaS模式的无边界链接能力?软件开发服务
    打破传统边界:类似WU界SaaS模式的无边界链接能力?软件开发服务+系统搭建+电商模式,微三云麦超介绍前文介绍:莞云软件供应链云平台系统——为什么选择莞云 莞云,移动应用系统产业软件供应链平台! 东莞市商二信息科技有限公司旗下品牌有
    腾讯地图开放平台申请
    2024年01月14日吴经理100地图标注 , 地图定位 , 导航地图标记网络技术服务;信息技术咨询服务;技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广;日用百货销售;化妆品零售;互联网销售(除销售需要许可的商品);化妆品批发;服
    《推广商业范例》PPT课件
    《《推广商业范例》PPT课件》由会员分享,可在线阅读,更多相关《《推广商业范例》PPT课件(32页珍藏版)》请在装配图网上搜索。1、RSS 计划更新条码与标识 2 议程介绍缩小空间码(RSS) RSS与 EAN/UPC和EPC的比较 GS1的 RSS决策 GS1推广商
    格蕾丝·凯利,才是王妃中的王妃,永远优雅的时尚icon!
    范主说:美人已去,风格永恒文 | 神马君, 授权商务范发布神马君前段时间去了趟故宫,在那看了一场摩纳哥王室的展览。展览浓缩了摩纳哥公国多年的历史和各方面的成就,神马君一进到展馆,就眼前一亮看到了熟悉的”摩纳哥王妃“---格蕾丝·凯
    昆明SEO整站优化,策略与实战技巧深度解析
    昆明专业整站SEO,深度解析优化策略与实战技巧。本文涵盖关键词研究、网站结构调整、内容优化、外部链接建设等核心环节,旨在帮助从业者掌握高效SEO方法,提升网站排名和流量。随着互联网的快速发展,搜索引擎优化(SEO)已经成为企业提升
    管理层次是什么(管理层次)
    1、按层次划分管理层次,管理可分为高层管理、中层管理和基层(底层)管理三个层次。 高层管理者是组织管理层次的高级管理者,其主要作用是确立组织管理层次的宗旨和目标,规定职责和提供资源。中层管理者负责利用资源以实现高层管理者确立
    相关文章
    推荐文章
    发表评论
    0评