bash shell关联数组提高查找效率
2013-03-14 21:09
387 查看
前言
数组中判断元素是否存在的时间复杂度一般为O(n),是因为大家一般的做法都是遍历一遍数组看看所要找的数据是否存在。这里介绍一种利用key的唯一性来实现的时间复杂度为O(1)的判断元素是否存在的方法
在c语言里这种方法经常使用,这里介绍在shell的语法中我们如何利用关联数组和key值唯一性来提高脚本的执行效率
需求&&解决方法
构建关键字数组和查找数组
#构建关键字数组 for num in `seq 1 10` do element[$num]="user_"$num done #构建被搜索数组 for num in `seq 1 100` do search[$num]="user_"$num done
O(n2)的普通搜索
#普通的搜索方式,时间复杂度O(N2) for e in ${element[*]} do for s in ${search[*]} do if [ $e = $s ]; then echo "找到$e" break fi done done
O(1)的关联数组搜索
#关联数组方式 declare -A newsearch for s in ${search[*]} do newsearch[$s]=1 done #KEY值唯一性,时间复杂度O(1) for e in ${element[*]} do if [ ${newsearch[$e]} -eq 1 ]; then echo "找到$e" fi done
shell关联数组
下标数组元素是通过数组下标(数组下标可以是算数表达式,其结果必须是一个整数)来访问的,但是这种访问方式在表达某些关联性很强的数据时会存在限制类似于php,shell也提供了一种数组,其可以使用任意的字符串作为下标来访问数组元素,这种数组叫关联数组,关联数组也是php的精髓所在
注意,shell中定义关联数组需要声明,声明语法:
declare -A array_name
相关文章推荐
- bash shell关联数组提高查找效率
- shell关联数组提高查找效率
- PHP将两个关联数组合并函数提高函数效率
- PHP将两个关联数组合并函数---提高函数效率
- PHP的数组中提高元素查找与元素去重的效率的技巧解析
- PHP将两个关联数组合并函数提高函数效率
- PHP的数组中提高元素查找与元素去重的效率的技巧解析
- 提高Linux工作效率的十大bash技巧
- alias提高工作效率 bash快捷键
- 【提高学习效率】☞(高速查找所需文件(夹))
- shell的 关联数组 和 普通数组
- bash shell数组
- Shell 关联数组 Hash
- 提高 Vim 和 Shell 效率的 9 个建议
- Shell小工具, 这些工具极大的提高了我的工作效率
- 熟悉 Bash 快捷键来提高效率
- bash shell基础特性之三(数组)
- BASH命令和SHELL脚本总结(18)使用ACK在指定类型的文件中进行查找
- 活用Windows查找命令提高工作效率
- 利用IO流复制文件效率提高版,这里主要用了一个数组做了一个缓存,提升了传递效率。