直接選擇排序
反轉排序
這個演算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端(公升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名「氣泡排序」
氣泡排序的基本思想是對比相鄰的兩個元素值,如果滿足條件就交換元素值,把較小的元素移動到陣列前面,把大的元素移動到陣列後面(也就是交換兩個元素的位置) ,這樣較小的元素就像氣泡一樣從底部上公升到頂部。
冒泡演算法由雙層迴圈實現,其中外部迴圈用於控制排序輪數,一般為要排序的陣列長度減1次,因為最後一次迴圈只剩下乙個陣列元素,不需要對比,同時陣列已經完成排序了。而內部迴圈主要用於對比陣列中每個相鄰元素的大小,以確定是否交換位置,對比和交換次數隨排序輪數而減少。
#!/bin/bash
a=(34 5 6 12 23 61)
b=`echo $`
echo
"原陣列的排序為$b"
c=$for
((i=1;i<$c
;i++))
dofor
((k=0;k<$c
-1;k++))
j=$[
$k+1]
second=$if[
$first
-gt$second
] then
temp=$first
a[$k]=$second
a[$j]=$tempfi}
done
echo
"排序後的輸出為$"
與氣泡排序相比,直接選擇排序的交換次數更少,速度會快些
將指定排序位置與其它陣列元素分別對比,如果滿足條件就交換元素值,注意這裡區別氣泡排序,不是交換相鄰元素,而是把滿足條件的元素與指定的排序位置交換(如從最後乙個元素開始排序) ,這樣排序好的位置逐漸擴大,最後整個陣列都成為已排序好的格式。
#!/bin/bash
a=( 34 5 6 12 23 61)
length=$
for(
(i=1;i<$length
;i++))
do index=0
for((j=1;j<=$length
-i;j++))
-gt $
] then
index=$j
fi} temp=$
a[$length-$i
]=$ a[
$index
]=$temp
done
echo
"排序後的輸出為$"
以相反的順序把原有陣列的內容重新排序
把陣列最後乙個元素與第乙個元素替換,倒數第二個元素與第二個元素替換,以此類推,直到把所有陣列元素反轉替換
#!/bin/bash
a=(1 2 3 4 5 6)
length=$
for(
(i=0;i<$length
/2;i++))
do temp=$
a[$i]=$
a[$length-$i
-1]=$temp
done
echo $
Shell指令碼之陣列
陣列是存放相同型別資料的集合,陣列中可以存放多個值,經常配合迴圈語句進行使用。例如 有乙個陣列 num 15 16 17 18 19 陣列名稱 num 陣列元素 第1個 11 陣列長度 5 陣列下標 元素18所對應的下標為3shell 陣列用括號來表示,元素用 空格 符號分割開,語法格式如下 方法一...
shell指令碼之陣列
陣列中可以存放多個值。bash shell只支援一維陣列,初始化時不需要定義陣列大小。與大部分程式語言類似,陣列元素的下標由0開始。shell陣列用括號來表示,元素用 符號來分割開,語法格式如下 array name n1 n2 n3 ns 例項 array name a b c d 我們也可以使用...
Shell氣泡排序
通過對資料迴圈排序,得出數值大小,進行排序。bin bash 氣泡排序 score 10 511007060 for i 1 i i dofor j 0 j i j doif gt then temp 中間變數 score j score j 1 temp fidone done echo 此處 j...