氣泡排序的過程:
第一輪排序:如果有5個數從大到小排序,第一位數與第二位數進行比較,如果第一位小,則第一位數和第二位數交換位置。之後按照這個邏輯對第二位數與第三位數,第三位數與第四位數,第四位數與第五位數分別進行比較與交換。一共會進行4次比較,交換次數小於等於4。這樣一輪比較下來,最小的數就排在了最後面;
第二輪排序:由於最小的數已經排在了最後面,所以第二輪排序只需要考慮前四位數。對前四位數按照第一輪排序的方法進行排序,將最小的數排到最後,也就是5個數中的倒數第二位;
第三輪排序:排前三位;
第四輪排序:排前兩位。
氣泡排序的思想(思想就是對過程的抽象與總結):
先進行抽象:我們對上面的氣泡排序過程進行抽象,如果有n個數,第一輪會有n-1次比較(交換次數小於等於n-1),之後每輪的比較次數逐次減1,一共進行n-1輪排序。
再進行總結:氣泡排序就是每輪比較選出乙個最小的數放在最後,進行n-1輪比較,將n個數按從大到小進行排列。(也可以是從小到大,這裡按從大到小排序進行舉例)
現在將我們的總結轉換為**的形式(由於powershell中貌似沒有c語言中的結構體,我就用兩個陣列studentname和studentscore來替代了),其中粉色字型為排序部分的關鍵**:
$count = read-host "對於粉色字型:enter the amout number of the students
"$studentname = new-object system.collections.arraylist
$studentscore = new-object system.collections.arraylist
for($i=1;$i
-le [int]$count;$i++)
#sort begin.
for($i=1;$i -le $count-1;$i++)
}$i++}#
print the sorted result.
write-host "
below is the sorted result:
"for($i=0;$i
-le$count-1;$i++)
1、外for迴圈代表進行$count-1輪排序;
2、內for迴圈代表從第一輪排序開始,第「$i」輪排序將進行$count-$i次比較。
執行介面如下——
輸入學生數:
輸入學生姓名:
輸入學生分數:
排序結果為:
由於氣泡排序的核心是內外雙層巢狀迴圈,時間複雜度為o(n*n),這是乙個非常高的時間複雜度。
桶排序 PowerShell版
scores 88,13,99,26,62,64,77 score s scope is from 0 100 sortedscore new object system.collections.arraylist for i 0 i le 100 i for i 1 i le scores.cou...
氣泡排序 JAVA版
氣泡排序 演算法思想是每次從陣列末端開始比較相鄰倆元素,把第i小的冒泡到陣列的第i個位置。i從0一直到n 1從而完成排序。當然也可以從陣列開始端開始比較相鄰兩元素,把第i大的冒泡到第n i個位置。i從0一直到n 1從而完成排序。public abstract classsorterextendsco...
氣泡排序(Java版)
public class sort public void display system.out.print 第 i 1 趟排序的結果 display public static void main string args sort sort new sort a system.out.print ...