冒泡排序不用多說(shuō)什么了,雖然復(fù)雜度很高弄息,但是卻這么“有名”痊班。。摹量。不論哪一門語(yǔ)言都應(yīng)該會(huì)寫這個(gè),也算入門算法吧~~
直接上代碼好了馒胆!
window.onload = function(){
var arr=[];
for(var i=0;i<10;i++){
arr.push(prompt('請(qǐng)輸入整數(shù)'));
}
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;
}
}
}
};
冒泡排序的一個(gè)特點(diǎn)是嵌套循環(huán)缨称,外層循環(huán)的次數(shù)是一共需要進(jìn)行多少趟比較,2個(gè)數(shù)需要比較一次祝迂,3個(gè)數(shù)需要2次睦尽,類推n個(gè)數(shù)需要n-1次。內(nèi)層循環(huán)是每趟比較需要比較幾次型雳,代碼中用的是arr.length-i当凡,因?yàn)楸容^一趟以后最大的數(shù)已經(jīng)排到最后下一次無(wú)需再做比較,所以減掉i纠俭,即之前比過(guò)的數(shù)不用比較直接進(jìn)行下一趟沿量。
讓我們來(lái)對(duì)冒泡排序封裝成一個(gè)函數(shù)吧~
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;
}
}
}
}
喏,每次對(duì)數(shù)組排序就可以直接調(diào)用函數(shù)啦冤荆。
最后朴则,需要記住冒泡排序的時(shí)間復(fù)雜度是O(N*N)。