冒泡排序不用多說什么了,雖然復雜度很高,但是卻這么“有名”。。。不論哪一門語言都應該會寫這個,也算入門算法吧~~
直接上代碼好了!
window.onload = function(){
var arr=[];
for(var i=0;i<10;i++){
arr.push(prompt('請輸入整數'));
}
for(var i=0;i<arr.length-1;i++){
for(var j=0;j<arr.length-i;j++){
if(arr[j]>arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
};
冒泡排序的一個特點是嵌套循環,外層循環的次數是一共需要進行多少趟比較,2個數需要比較一次,3個數需要2次,類推n個數需要n-1次。內層循環是每趟比較需要比較幾次,代碼中用的是arr.length-i,因為比較一趟以后最大的數已經排到最后下一次無需再做比較,所以減掉i,即之前比過的數不用比較直接進行下一趟。
讓我們來對冒泡排序封裝成一個函數吧~
function bubbleSort(arr){
for(var i=0;i<arr.length-1;i++){
for(var j=0;j<arr.length-i;j++){
if(arr[j]>arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
喏,每次對數組排序就可以直接調用函數啦。
最后,需要記住冒泡排序的時間復雜度是O(N*N)。