四 、冒泡演算法排序
方法1:
陣列名=(value0 value1 value2 …)
方法2:
陣列名=([0]=value [1]=value [2]=value)
方法3:
列表名=「value0 value1 value2 …」
陣列名=($列表名)
方法4:
陣列名[0]=「value」
陣列名[1]=「value」
陣列名[2]=「value」
……獲取陣列的長度
arr_length=$
陣列切片
[root@localhost ~]
# a=(1 2 3 4 5)
[root@localhost ~]
# echo $ //輸出整個陣列
1 2 3 4 5
[root@localhost ~]
# echo $ #$
3 4 5
注意:將陣列切片之後,返回的是字串,以空格作為分隔符
陣列替換
arr=
(1 2 3 4 5)
echo
$ //$
1 2 3 66 5
echo
$ //並不會替換陣列原有內容
1 2 3 4 5a=(
$) //要實現改變原有陣列,可通過重新賦值實現
echo
$1 2 3 66 5
刪除陣列
[root@localhost ~]
# arr=(1 2 3 4 5)
[root@localhost ~]
# unset arr //刪除整個陣列
[root@localhost ~]
# unset arr[2] //刪除第三個元素
[root@localhost ~]
# echo $
1 2 4 5
陣列新增元素
方法1 array_name[index]
=value
方法2 array_name[$]
=value
方法3 array_name=
("$" value1 ... valuen)
方法4 array_name+=
(value1 value 2 ... valuen)
注意:
"$"中雙引號不能省略,否則當陣列array_name**現包含
空格的元素時會按空格將元素拆分成多個
不能把@替換成*,否則在加雙引號時會把陣列array_name中的所有元素作為乙個元素新增到陣列中
在函式中呼叫陣列的時候可能會出現下面的問題
#!/bin/bash
test1()}
array=(3 2 1 4 5)
echo
"原始的陣列值為$"
test1 $array
執行結果如下圖所示
此時需要將陣列變數的值分解成單個的值,然後把這些值作為函式引數使用。在函式內部,再將所有的引數重新組合成乙個新的陣列變數。
演示**如下:
#!/bin/bash
test2()"
}array=(3 2 1 4 5)
echo
"原始的陣列值為$"
test2 $ //此處必加,表示把這個陣列看作乙個整體
執行結果如下
test3(
)*2]
}echo$}
array=
(3 2 1 4 5)
result=
($(test3 $))
echo
"新陣列的值為:$"
氣泡排序
類似氣泡上湧的動作,會將資料在陣列中從小到大或者從大到小不斷的向前移動。
基本思想:
氣泡排序的基本思想是對比相鄰的兩個元素值,如果滿足條件就交換元素值,把較小的元素移動到陣列後面(也就是交換兩個元素的位置),這樣較小的元素就像氣泡一樣從底部上公升到頂部。
演算法思路
冒泡演算法由雙層迴圈實現,其中外部迴圈用於控制排序輪數,一般為排序的陣列長度減1次,因為最後一次迴圈只剩下乙個陣列元素,不需要對比,同時陣列已經完成排序了。而內部迴圈主要用於對比陣列中每個相鄰元素的大小,以確定是否交換位置。
**實現
#!/bin/bash
paixu(
);i++
)) ##比較輪數為陣列長度減1,從1開始
dofor
((j=
0;j)) ##比較相鄰兩個元素,較大的數往後放,比較次數隨比較比較輪數而減少
doif
[$ -gt $
]##如果第乙個元素比第二個元素大就互換
then
temp=
$##把第乙個元素值儲存在臨時變數中
array[$j]
=$##把第二個元素值儲存到第乙個元素中
array[$[
$j+1]]=
$temp
##把臨時變數(也就是第乙個元素原值),儲存到第二個元素中
fidone
done
echo$}
#主體**
f=$(
cat $1)
paixu $f
執行結果如下
陣列的使用與氣泡排序
int array new int 10 intarrays 0,1,int arrays 列印出陣列的值 system.out.println arrays.tostring arrays 陣列進行公升序排序 arrays.sort arrays system.out.println arrays...
Shell程式設計中的陣列定義 遍歷
陣列定義 1 arr 1 2345 注意是用空格分開,不是逗號!陣列定義法2 12 3 4 array array 0 a array 1 b array 2 c 獲取陣列的length 陣列中有幾個元素 1 遍歷 for迴圈法 12 3 4 forvarin doecho var done 遍歷 ...
Shell程式設計中的陣列定義 遍歷
陣列定義法1 arr 1 2 3 4 5 注意是用空格分開,不是逗號!陣列定義法2 array array 0 a array 1 b array 2 c 獲取陣列的length 陣列中有幾個元素 遍歷 for迴圈法 for var in do echo var done 遍歷 帶陣列下標 for ...