linux shell实现求一个多维数组中的最大和最小值
同事发了一道shell题,是求一个多维数组中的最大和最小值
如文件 99file:
33 55 23 56 99
234 234 545 6546 34
11 43 534 33 75
43 34 76 756 33
343 890 77 667 55
我的实现之一:
#! /bin/bash echo "the file is :" cat 99shu max=0 min=999999 line=1 dnum=$(cat 99shu| wc -l) while (($line<=$dnum)) do for i in $(cat 99shu|head -"$line") do ((max<$i))&&max=$i ((min>$i))&&min=$i done let ++line done echo "the max number is: $max" echo "the min number is : $min"
结果:
the max number is: 6546
the min number is : 11
实现之二:
#! /bin/bash # echo the MAX and the MIN echo "the numbers is:" cat 99shu mnum=0 min=99999 while read line do declare -a arr=($line) lnum=$(echo $line | wc -w) i=0 while (( $i<$lnum )) do (($mnum<${arr[i]})) && mnum=${arr[i]} (($min>${arr[i]})) && min=${arr[i]} let ++i done done < 99shu echo "the max number is $mnum" echo "the min number is $min"
实现3,强大的awk
#! /bin/bash echo "the MAX number is: $( cat 99shu | awk '{for(i=1;i<=NF;i++)if(max<$i) max=$i;print max}'|tail -1)" echo "eht MIN number is: $( cat 99shu | awk '{min=999999;for(i=1;i<=NF;i++)if(min>$i)min=$i;print min}'|sort|head -1 )"
实现4:
#!/bin/bash min=$(cat 99shu | tr "\t" "\n"|tr " " "\n"|sort -n|uniq|grep -v "^$"|head -1) max=$(cat 99shu | tr "\t" "\n"|tr " " "\n"|sort -n|uniq|grep -v "^$"|tail -1) echo "The MAX number is $max" echo "The MIN number is $min"
相关推荐
-
Linux在shell中自动生成1到100的数组方法(两种方法)
之前自己在写shell脚本的时候,需要自动创建1-100的文本确不知道该如何去创建.百度一翻终于知道了创建的方法. 在shell脚本中创建1-100的方法很多,那我在这里主要就说两种容易理解且方便的方法: 第一种方法: for i in {1..100} do echo $i done 使用{1..100}这种方式简单明了,大家也可以在linux命令模式下直接:echo {1..100}看一下效果. 第二种方法: 使用seq函数 for i in `seq 1 100` do echo $i d
-
Shell 数组与关联数组详解及实例代码
Shell 数组与关联数组 1.数组 1.1. 数组定义 一对圆括号表示数组,数组元素之间用空格符号分割 xiaosi@Qunar:~$ a=(1 2 3) xiaosi@Qunar:~$ echo $a 1 xiaosi@Qunar:~$ a=("yoona" "lucy" "tom") xiaosi@Qunar:~$ echo $a yoona 1.2. 数组长度,元素,赋值与删除 长度:用${#数组名[@或*]} 可以得到数组长度 xiao
-
shell脚本编程之数组
数组就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组的各个变量称为数组的元素.数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式. 一.数组的表示方式 1.下标数组 下标必须为整数,格式:数组名[下标],下标默认从0开始. shell支持稀疏数组,下标整数不需要连续. 声明方式:declare -a 数组名 2.关联数组 关联数组可以使用任意的字
-
linux Shell脚本里面把一个数组传递到awk内部进行处理
前段时间和几位同事讨论过一个问题:Shell脚本里面怎样把一个数组传递到awk内部进行处理? 当时没有找到方法.前两天在QQ群里讨论awk的时候,无意间又聊起这个话题.机缘巧合之下找到一个思路,特此分享. 测试环境: [root]# head -1 /etc/redhat-release Red Hat Enterprise Linux Server release 6.5 (Santiago) [root]# awk --version | head -1 GNU Awk 3.1.7 众所周知
-
Linux Shell脚本系列教程(六):数组和关联数组
一.数组和关联数组 数组是Shell脚本非常重要的组成部分,它借助索引将多个独立的独立的数据存储为一个集合.普通数组只能使用整数作为数组索引,关联数组不仅可以使用整数作为索引,也可以使用字符串作为索引.通常情况下,使用字符串做索引更容易被人们理解.Bash从4.0之后开始引入关联数组. 二.定义打印普通数组 数组的方法有如下几种: 复制代码 代码如下: #在一行上列出所有元素 array_var=(1 2 3 4 5 6) #以"索引-值"的形式一一列出 array_var[0]=&q
-
Linux shell数组循环的实例详解
shell数组循环 测试shell数组,循环的例子: arr=("a" "b" "c") echo "所有的内容如下:"${arr[@]} echo "数组的长度:"${#arr[*]} for var in ${arr[@]} do echo "打印的内容:"$var done 输出的内容如下: 以上就是Linux shell数组循环的实例详解,如有疑问请留言或者到本站社区交流讨论,感
-
Shell脚本数组用法小结
array作为一种数据结构,在一些高级语言中都是有直接提供和实现的,当然我shell中也是有的哈. PS:写这篇文章的原因是B哥在群里发了一个截图: 我大B哥依然是全能型人才哈...废话少说,说下正题 1.怎么声明一个数组变量? 直接赋值: 复制代码 代码如下: array[0]="Zero" array[1]="One" array[2]="Two" declare声明: 复制代码 代码如下: declare -a array 小括号空格法:
-
linux shell实现求一个多维数组中的最大和最小值
同事发了一道shell题,是求一个多维数组中的最大和最小值 如文件 99file: 33 55 23 56 99 234 234 545 6546 34 11 43 534 33 75 43 34 76 756 33 343 890 77 667 55 我的实现之一: #! /bin/bash echo "the
-
python+numpy按行求一个二维数组的最大值方法
问题描述: 给定一个二维数组,求每一行的最大值 返回一个列向量 如: 给定数组[1,2,3:4,5,3] 返回[3:5] import numpy as np x = np.array([[1,2,3],[4,5,3]]) # 先求每行最大值得下标 index_max = np.argmax(x, axis=1)# 其中,axis=1表示按行计算 print(index_max.shape) max = x[range(x.shape[0]), index_max] print(max) # 注
-
java高效打印一个二维数组的实例(不用递归,不用两个for循环)
打印1个元素,不让循环变量i++,走出思维定式(执行一次循环体,就i++).public class OneForPrint2DArr { public static void main(String[] args) throws Exception { int[][] a = { { 1, 2, 3 }, { 4, 5} }; for (int i = 0, j = 0; i < a.length;) { System.out.println(a[i][j]); j++; if (j >=
-
PHP 如何获取二维数组中某个key的集合
本文为代码分享,也是在工作中看到一些"大牛"的代码,做做分享. 具体是这样的,如下一个二维数组,是从库中读取出来的. 代码清单: 复制代码 代码如下: $user = array( 0 => array( 'id' => 1, 'name' => '张三', 'email' => 'zhangsan@sina.com', ), 1 => array( 'id' => 2, 'name' => '李四', 'email' => 'lisi@
-
php在多维数组中根据键名快速查询其父键以及父键值的代码
我这么想的: 遍历一遍多维数组,将所有的键建立索引生成一个一维数组: 每次通过键名去查这个键的上级数组及数据 OK,代码如下 indexKey创建索引数组函数: 复制代码 代码如下: <?php /** * FILE_NAME : arr.php FILE_PATH : test/ * 在多维数组中根据键名快速查询其父键以及父键值 * * @copyright Copyright (c) 2006-2010 mail:levi@cgfeel.com * @author Levi * @packa
-
php实现多维数组中每个单元值(数字)翻倍的方法
本文实例讲述了php实现多维数组中每个单元值(数字)翻倍的方法.分享给大家供大家参考.具体分析如下: 前提:一个多维数组,它的每个最小单元值都为数字. 要求:写一个函数,将最小单元值翻倍. 代码如下 <?php $arr = array(1,3,'a'=>20,'b'=>array(2,4,6,'c'=>7)); function arr2($arr){ foreach($arr as $key=>$v){ if(!is_array($v)){ $arr[$key] *= 2
-
C语言二维数组中的查找的实例
C语言二维数组中的查找的实例 题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 思路描述:一个数字的下方和右方是比它本身大的区域,而左方和上方时比它本身小的区域.选取右上角的数字进行比较,当该数大于指定的数时,舍去该列,当该数小于指定的数时,舍去该行,当相等时,则表示找到 C语言实现: #include<stdio.h> #include<stdlib.h>
-
JS中取二维数组中最大值的方法汇总
在JavaScript中可以通过内置的 Math.max() 的最大值,但是要从多重数组中取出最大值,还是有一定的难度. 问题描述 假设你有一个数组,而且这个数组中包含了数字的子数组,而我们要做的是从数组中的每个子数组中返回其最大的那个最大数. 基本解决方案 function largestOfFour(arr) { var results = []; // 创建一个results变量来存储 // 创建一个外层循环,遍历外层数组 for (var n = 0; n < arr.length; n
-
PHP递归删除多维数组中的某个值
今天在做业务逻辑的过程中,需要在一个不确定的多维数组中删除某个特定的key,查了挺长时间加上自己的修改,终于满足了业务逻辑,该方法在修改后应该可以适用于很多地方,所以记录下来以备后用,我这里是一个多维数组,还是json_encode后的,主要目的是删除所有old_tags_id数组中有tag_id=264的数据,顺便要删除相应的tag_name,还有 addtag要减1,,代码如下: 先放递归函数,当然这里是核心,很多人看了这个应该就已经知道如何使用了. public function deal
-
C++二维数组中的查找算法示例
本文实例讲述了C++二维数组中的查找算法.分享给大家供大家参考,具体如下: 一.问题: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 二.实现代码: #include <iostream> #include <vector> using namespace std; bool Find(int target, vector<vector<int>
随机推荐
- 详解如何在 docker 容器中捕获信号
- Vue声明式渲染详解
- Nginx服务器安装及配置文件与使用详解
- IOS中计算缓存文件的大小判断实例详解
- 解读ASP.NET 5 & MVC6系列教程(11):Routing路由
- PHP利用超级全局变量$_GET来接收表单数据的实例
- 适用于javascript开发者的Processing.js入门教程
- 在Python的web框架中中编写日志列表的教程
- 算法系列15天速成 第五天 五大经典查找【中】
- 使用FSO把文本信息导入数据库
- oracle 多个字符替换实现
- 基于Bootstrap实现tab标签切换效果
- jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
- 详解java实现遍历二叉树的三种情况
- java中queue接口的使用详解
- android连续拖动导致挂起的解决方法
- 使用C#实现基于TCP和UDP协议的网络通信程序的基本示例
- Three.js 再探 - 写一个微信跳一跳极简版游戏
- python使用json序列化datetime类型实例解析
- python按行读取文件,去掉每行的换行符\n的实例