awk輸出首行相同的最大值和最小值

2021-07-22 02:09:59 字數 629 閱讀 1097

file

1       9

1       10

1       12

1       6

2       4

2       100

2       23

2       101

2       99

3       10

3       998

3       1

3       90

求出首行相同的最大值和最小值的行進行輸出。

最大值:

awk 'end'  file

解析:進行比較,以首行的第乙個欄位為下標建立陣列,如果下標的值小於第二個字段,那麼就將第二個欄位的值賦值給陣列的值,這裡需要說的是,開始陣列的值是0,所以是小於

$2是成立的,所以是理所當然的進行賦值。到最後進行輸出。

最小值:

awk '!(a[$1])end' file

解析:最小值的時候不能,簡單的更改乙個符號,把上面的小於號改為大於號就行,因為開始的時候a[$1]的值是

0,肯定是不大於

$2的,這時候沒有辦法進行比較,所以我這裡做的是,如果陣列的下表是第一次出現的話,我把這行的第二個字段賦值給陣列,然後進行比較。最後進行輸出。

經典例題 元素的最大值和次最大值

方法一 排序後查詢,直接呼叫sort 函式 特別注意sort 函式的用法 include using namespace std intmain sort a 1 a n cout 排序後輸出最後兩個元素即可。方法二 迴圈遍歷比較陣列元素 將陣列元素前兩個看作最大和次最大值,然後從第三個開始迴圈比較...

求陣列中最大值和次最大值的較優演算法

先讓最大值為陣列首元素,然後用max和陣列的每乙個值進行比較,若小則交換,此時將max的舊值給次最大值submax。但如果陣列中最大值在遍歷前就已經找到,那麼submax將不再更新,所以在max值不更新的時候,要將submax與最近遍歷到的陣列與元素進行更新,以保證submax得到陣列中的次大值 如...

qt中獲取容器Vector中的最大值和最小值

獲取qt容器中的最大值和最小值的做法 一 加上標頭檔案 include 二 加上如下的 qvector data 第一種表示最大值 qvector iterator max std max element std begin data std end data 第二種表示最大值 auto max s...