1. 程式人生 > 其它 >JS阻止事件冒泡

JS阻止事件冒泡

技術標籤:筆記排序演算法

陣列使用和排序

陣列新增元素

array_name[index]=value

array_name[${#array_name[@]}]=value

array_name=("${array_name[@]}" value1 … valueN)
雙引號不能省略,否則,當陣列array_name中存在包含空格的元素時會按空格將元素拆分成多個
不能將“@”替換為“”,如果替換為“”,不加雙引號時與“@”的表現一致,加雙引號時,會將陣列array_name中的所有元素作為一個元素新增到陣列中

array_name+=(value1 … valueN)
待新增元素必須用“()”包圍起來,並且多個元素用空格分隔

向函式傳陣列引數

如果將陣列變數作為函式引數,函式只會取陣列變數的第一個值。

  echo "接收到的引數列表:[email protected]"
  newarrary=$1
  echo "新陣列的值為:${newarrary[*]}"
}

array=(3 2 1 4 5)
echo "原始陣列的值為:${array[*]}"
test1 $array

解決這個問題則需要將陣列變數的值分解成單個的值,然後將這些值作為函式引數使用。在函式內部,再將所有的引數重新組合成一個新的陣列變數。

  newarrary=($(echo [email protected]))
  echo "新陣列的值為:${newarrary[*]}"

}

array=(3 2 1 4 5)
echo "原始陣列的值為:${array[*]}"
test2 ${array[*]}

從函式返回陣列

test2() {
  newarrary=(`echo [email protected]`)

  sum=0
  for value in ${newarrary[*]}
  do
    sum=$[$sum + $value]
  done
  echo $sum
}

test3() {
  newarrary=(`echo 
[email protected]
`) for ((i=0; i<=$[$# - 1]; i++)) { newarrary[$i]=$[${newarrary[$i]} * 2] } echo ${newarrary[*]} } array=(3 2 1 4 5) echo "原始陣列的值為:${array[*]}" result1=`test2 ${array[*]}` echo "新陣列的和為:$result1" result2=(`test3 ${array[*]}`) echo "新陣列的值為:${result2[*]}"

氣泡排序

類似氣泡上湧的動作,會將資料在陣列中從小到大或者從大到小不斷的向前移動。

基本思想:

氣泡排序的基本思想是對比相鄰的兩個元素值,如果滿足條件就交換元素值,把較小的元素移動到陣列前面,把大的元素移動到陣列後面(也就是交換兩個元素的位置),這樣較小的元素就像氣泡一樣從底部上升到頂部。

演算法思路

冒泡演算法由雙層迴圈實現,其中外部迴圈用於控制排序輪數,一般為要排序的陣列長度減1次,因為最後一次迴圈只剩下一個數組元素,不需要對比,同時陣列已經完成排序了。而內部迴圈主要用於對比陣列中每個相鄰元素的大小,以確定是否交換位置,對比和交換次數隨排序輪數而減少。

#!/bin/bash
array=(3 2 5 1 4)
 
for ((i=1; i<${#array[*]}; i++))   ###比較輪數為陣列長度減1,從1開始
do
  for ((j=0; j<${#array[*]}-i; j++))   ###比較相鄰兩個元素,較大的數往後放,比較次數隨比較輪數而減少
  
  do
    if [ ${array[$j]} -gt ${array[$[$j+1]]} ];then   ###如果第一個元素比第二個元素大就互換
      temp=${array[$j]}					###把第一個元素值儲存到臨時變數中
      array[$j]=${array[$[$j+1]]}		###把第二個元素值儲存到第一個元素中
      array[$[$j+1]]=$temp				###把臨時變數(也就是第一個元素原值)儲存到第二個元素中
    fi
  done
done
 
echo ${array[*]}