Shell数组以及排序算法
Shell數(shù)組以及排序算法
- 數(shù)組
- 一、定義數(shù)組
- 1.數(shù)組包括的數(shù)據(jù)類型
- 2.獲取數(shù)組長度
- 3.讀取某個下標賦值
- 二、數(shù)組遍歷
- 三、數(shù)組切片
- 四、數(shù)組替換
- 五、數(shù)組刪除
- 六、數(shù)組追加元素
- 七、向函數(shù)傳數(shù)組參數(shù)
- 八、排序算法
- 1.冒泡排序算法
- 2.直接選擇排序
- 3.反轉(zhuǎn)排序
數(shù)組
一、定義數(shù)組
方法一:
數(shù)組名=(value0 value1 value2 …)
方法二:
數(shù)組名=([0]=value [1]=value [2]=value …)
方法三:
列表名=“value0 value1 value2 …”
數(shù)組名=($列表名)
方法四:
數(shù)組名[0]=“value”
數(shù)組名[1]=“value”
數(shù)組名[2]=“value”
1.數(shù)組包括的數(shù)據(jù)類型
● 數(shù)值類型 ● 字符類型(字符串)使用" "或''定義2.獲取數(shù)組長度
abc=(10 20 30 40 50 60) echo $(#abc[*]) echo $(#abc[@]) #獲取數(shù)組長度3.讀取某個下標賦值
abc=(10 20 30 40 50 60) echo ${abc[0]}echo ${abc[2]}echo ${abc[4]二、數(shù)組遍歷
[root@localhost ~]# vim dome38.sh #!/bin/bash arr1=(10 20 30 40 50) for i in ${arr1[@]} doecho $i done
三、數(shù)組切片
arr2=(1 2 3 4 5 6) echo ${arr2[*]} echo ${arr2[@]:0:2} #獲取 ${數(shù)組名[@或*]:起始位置:長度} 的值echo ${arr2[@]:1:3}echo ${arr2[@]:3:4}四、數(shù)組替換
arr2=(1 2 3 4 5 6)echo ${arr2[@]/4/66} # ${數(shù)組名[@或*]/查找字符/替換字符} echo ${arr2[@]} #并不會替換數(shù)組原有內(nèi)容arr2=(${arr2[@]/4/66}) #要實現(xiàn)改變原有數(shù)組,可通過重新賦值實現(xiàn) echo ${arr2[@]}五、數(shù)組刪除
echo ${arr2[@]} unset arr2 echo ${arr2[@]} arr2=(1 2 3 4 5 6 7) echo ${arr[*]}unset arr[5] #刪除數(shù)組中選擇索引對應(yīng)的元素 echo ${arr[*]}echo ${arr[6]}六、數(shù)組追加元素
方法一:根據(jù)索引單個添加元素 array_name[index]=value 方法二: array_name[${#array_name[@]}]=value 方法三: array_name=("${#array_name[@]}" value1 value2 ... valueN) 雙引號不能省略,否則數(shù)組中存在包含空格的元素時會按空格將元素拆分成多個 不能將“@”替換為“*”,如果替換為“*”,不加雙引號時與“@”的表現(xiàn)一致,加雙引號時,會將數(shù)組array_name中的所有元素作為一個元素添加到數(shù)組中 方法四: array_name+=(value1 value2 ... valueN) 注:待添加元素必須用“()”包圍起來,并且多個元素用空格分隔七、向函數(shù)傳數(shù)組參數(shù)
八、排序算法
1.冒泡排序算法
類似氣泡上涌的動作,會將數(shù)據(jù)在數(shù)組中從小到大或者從大到小不斷的向前移動。
-
基本思想:
冒泡排序的基本思想是對比相鄰的兩個元素值,如果滿足條件就交換元素值,把較小的元素移動到數(shù)組前面,把大的元素移動到數(shù)組后面(也就是交換兩個元素的位置),這樣較小的元素就像氣泡一樣從底部上升到頂部。 -
算法思路:
冒泡算法由雙層循環(huán)實現(xiàn),其中外部循環(huán)用于控制排序輪數(shù),一般為要排序的數(shù)組長度減1次,因為最后一次循環(huán)只剩下一個數(shù)組元素,不需要對比,同時數(shù)組已經(jīng)完成排序了。而內(nèi)部循環(huán)主要用于對比數(shù)組中每個相鄰元素的大小,以確定是否交換位置,對比和交換次數(shù)隨排序輪數(shù)而減少。
2.直接選擇排序
-
與冒泡排序相比,直接選擇排序的交換次數(shù)更少,所以速度更快。
-
基本思想:
將指定排序位置與其他數(shù)組元素分別對比,如果滿足條件就交換元素值,注意這里區(qū)別冒泡排序,不是交換相鄰元素,而是把滿足條件的元素與指定的排序位置交換(如從最后一個元素開始排序),這樣排序好的位置逐漸擴大,最后整個數(shù)組都成為已排序好的格式。
3.反轉(zhuǎn)排序
-
以相反的順序把原有數(shù)組的內(nèi)容重新排序
-
基本思想:
把數(shù)組最后一個元素與第一個元素替換。倒數(shù)第二個元素與第二個元素替換,以此類推,直到把所有的數(shù)組元素反轉(zhuǎn)替換完
總結(jié)
以上是生活随笔為你收集整理的Shell数组以及排序算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑性能提升利器,apu高频内存助您飞速
- 下一篇: Shell的sort、uniq、tr、c