冒泡排序不用多说什么了,虽然复杂度很高,但是却这么“有名”。。。不论哪一门语言都应该会写这个,也算入门算法吧~~
直接上代码好了!
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)。