分享好友 最新动态首页 最新动态分类 切换频道
数组 查找 对应索引
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. 用${!数组名[*或@]}  










    最新文章
    iOS越狱最新消息,探索风险与法律的边缘
    随着科技的飞速发展,iOS越狱这一话题再次引发了广泛关注,本文将为您带来关于iOS越狱的最新消息,同时探讨与之相关的风险和法律问题。iOS越狱是指通过一系列技术手段,破解苹果设备的限制,使得用户能够安装非官方应用商店的第三方应用、
    AI辅助下的PPT制作:免费下载与创意设计
    在当今这个数字化的时代,PPT已经成为了我们日常工作和学习中不可或缺的一部分。然而,制作一份高质量的PPT却并非易事,它需要我们具备一定的设计能力和审美水平。幸运的是,随着人工智能技术的发展,AI辅助下的PPT制作已经成为了可能。本
    1、常用规则引擎、java规则引擎的标准。
    一、概述。JSR94标准 在本文中,我们将介绍一些最流行的Java规则引擎。 在应用程序中,业务规则很复杂(比如:优惠券的使用规则)。如果用源代码实现这些规则,很繁琐。通过规则引擎将业务逻辑与源代
    m.1518.com的百度排名情况
    a href="https://baidurank.aizhan.com/" target="_blank"img src="https://baidurank.aizhan.com/api/mbr?domain=m.1518.com&style=images" //aa href="https://baidurank.aizhan.com/" target="_blank"script type=&quo
    gpt-4是否免费(gpt42)
    本文主要讲解“gpt-4可以免费使用吗?”本文的解释简单明了,易学易懂。请按照主机频道的思路越来越深入,研究学习“gpt-4可以免费使用吗?”!Gpt-4不能免费使用,每个月需要支付20美元。与ChatGPT最初使用的GPT-3.5型号相比,GPT-4实现了
    AI美女写真:用搜狐简单AI一键生成超逼真美女写真!
    搜狐简单AI是最近备受关注的一款AI绘图工具,操作极其简单,适合新手用户。它支持多种风格提取,只需选择模板、输入描述并点击生成,作品即可快速呈现,反应速度快且效果相对稳定。在实际使用中,它几乎不需要复杂的设置,人人都能轻松上手
    10分钟以前:《天阔文化App》无法出金!拉掉遮羞布真相让人恼羞成怒!!
    某天晚上,柳先生玩手机,浏览到一个网站,里面弹出一个链接被骗信用分不足无法出金,在好奇心的驱使下,柳先生下载了被骗信用分不足无法出金,进入之后,有被骗信用分不足无法出金平台的客服来联系柳先生,被骗信用分不足无法出金平台客服
    AI智能人工智能解决方案(50页 PPT)
    人工智能的定义和发展历程:是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的新的技术科学,企图了解智能实质并生产出能以类似人类智能方式做出反应的智能机器,涉及机器人、语言识别、图像识别、自然语言处理和专
    9个超实用的机器学习数据集网址,都给你整理好啦(建议收藏)
    机器学习通常被视为一种神奇的工具,你可以整理数据,并将获得的数据知识转化为预测。为此,我们也需要花费大量时间在数据收集、清理和合并等方面。 今天我将给大家分享 9 个关于机器学习数据集获取的最佳网址,它
    AI人工智能仿真机器人
    一、现状和背景人工智能(Artificial Intelligence,简称AI)是当今科技领域的热门话题,而AI人工智能仿真机器人则是AI技术在机器人领域的应用。随着技术的快速发展和应用的广泛推广,AI人工智能仿真机器人逐渐成为了众多行业的焦点。二、
    相关文章
    推荐文章
    发表评论
    0评