linux shell实现求一个多维数组中的最大和最小值_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"

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索多维数组
, 最大值
最小值
shell 多维数组、shell脚本多维数组、最小二乘多维数据拟合、多维最小二乘法、多维数组,以便于您获取更多的相关知识。

时间: 2024-10-30 00:00:27

linux shell实现求一个多维数组中的最大和最小值_linux shell的相关文章

已知一个二维数组,求一个新的二维数组,具体描述请看内容吧

问题描述 我将DataTable中的数据存放到了一个二维数组中,如图所示比如这个数组的名称是a[][],现在我定义一个新的二维数组b[][],求出a的每一行.每一列的和,然后和a一起,都赋值给b,b的结构如图所示.右下角是整个a数组的所有数据的和.这样的程序怎么写呢? 解决方案 解决方案二:唉,自己写for解决方案三:全部循环,简单暴力解决方案四:先看看....

c++如何在9行9列的二维数组中找任意2点之间的走法,急~~~~~请帮忙~~~~~

问题描述 0123456781........2..a.....3........4........5....b...6........7........8........在这样一个二维数组中,遍历任意2点之间路径走法,如a->b的所有走法急~~请各位大侠帮忙解决一下,想用递归,但不知道怎么写注:遍历不能走斜线,a,b两点随即产生重谢 解决方案 解决方案二:楼主描述不明确,是否要两点间最短的路径,还是两点间所有路径解决方案三:如果要两点间所有路径就用迷宫搜索吧,效率比较低.一般都是搜索最短路径的

PHP求异形多维数组的平均值的例子

在php中,求一个多维异形多维数组常见的方法就是递归,如同以下代码 $count=0;$sum=0; function avgarr($arr) {     global $sum,$count;          //全局变量     foreach ($arr as $value) {      //循环遍历数组         if (is_array($value)) {             avgarr($value);    //递归         }         else

c-如何定义一个自增之后在二维数组中移动到下一行的指针?

问题描述 如何定义一个自增之后在二维数组中移动到下一行的指针? 如何定义一个自增之后在二维数组中移动到下一行的指针?如何定义一个自增之后在二维数组中移动到下一行的指针? 解决方案 自增是不能移动到下一行的,自增实现的是++, 解决方案二: 用二重数组,比如 int ** arr; arr += 第一维长度; 解决方案三: int a[m][n]={""}; *a+1;表示下一行; *(a+1):表示下一个元素位置. 若果now<n,移动到x行的当前位置:a[m*x+now]. 解

link中如何颠倒一个二维数组?二维数组不支持revses吧?

问题描述 link中如何颠倒一个二维数组?二维数组不支持revses吧? link中如何颠倒一个二维数组?二维数组不支持revses吧? 解决方案 可以用select Enumerable.Range(0 arr.GetLength(1)).Select(x => Enumerable.Range(0 arr.GetLength(1)).Select(y => arr[x y]).Reverse().ToArray()).Reverse().ToArray(); 解决方案二: 长方形的矩阵有上

c++程序-我用vector里resize函数创建了一个二维数组,怎么给它排序?代码如下,哪里错了呢?

问题描述 我用vector里resize函数创建了一个二维数组,怎么给它排序?代码如下,哪里错了呢? #include #include #include #include #include using namespace std; int main() { int n, m; cout << "input the row:n and the column:m" << endl; cin >> n >> m; vector< vec

可以用一个一级指针指向一个二维数组吗?

问题描述 可以用一个一级指针指向一个二维数组吗? 看到书上写的都是二级指针,如int *p[4]等等, 数组不是在内存中的存储是连续的吗, 为什么不用一级指针直接指向第一个元素呢? 解决方案 直接用一个指针,就可以完成指向数组的功能,无论数组是多少维.只是指向后,如果控制下标需要自己考虑.其实,数组名就可以认为是一个静态的指针. 解决方案二: 建议你读下这篇文章http://www.cnblogs.com/wanpengcoder/archive/2010/07/17/1779503.html

在java中定义了一个二维数组,这样做好像不对,输出时报错, 代码如下

问题描述 在java中定义了一个二维数组,这样做好像不对,输出时报错, 代码如下 我是想要定义一个二维数组,然后动态地给它赋值,应该怎么做不知道问题出在做么地方,请大神指导一下 ,代码如下: int[][] a = null; a[1] = new int[]{1,2,3}; System.out.println(a[1][1]); 解决方案 int[][] a = null; a = new int[5][];//第一维需要初始化 a[1] = new int[]{1,2,3};//这是第二维

c++-C++,为一个二维数组赋值,为什么到一半就停止了?

问题描述 C++,为一个二维数组赋值,为什么到一半就停止了? int preprocessing(char strFile[],IMAGEDATA imagedata,PIXEL **imagepixel,long *wid,long *hei) { FILE *fpi; imagedata= NULL;//动态分配存储原图片的像素信息的二维数组 long *width,*height;//新定义一个像素结构体二维数组 width=wid;height=hei; fpi=fopen(strFil