冒泡流程写法 (小的往左冒)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <title>hello world</title> </head> <body> <script> let arr=[8,7,9,1,3]; let temp; for(let i=0; i<arr.length-1; i++){ console.warn(` -------第${i+1}趟:目的是取出数组中第${i+1}个最小的数------`) for (let j=i+1; j<arr.length; j++) { let result=arr[i]>arr[j]; console.log(`第${j-i}次比较:拿数组第1个元素${arr[i]}比较数组第${j}个元素${arr[j]},结果${result?'是大于!':'本身就是是小于!'}${result?'把小的数'+arr[j]+'置前':'暂且暂且不动'}`) if(result){ temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } console.log(arr) } console.log(`说明:经过第${i+1}趟比较,已经选出了第${i+1}小的数,是${arr[i]}`) } console.log('最后一个不用循环了,肯定是最大的了') </script> </body> </html>
还有另一种冒泡排序(大的往右冒)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <title>hello world</title> </head> <body> <script> function sortAry(ary){ for(let i=0;i<ary.length-1;i++){ console.warn(`--第${i+1}趟:目的是取出数组中第${i+1}个最大的数--`) for(let j=0;j<ary.length-1-i;j++){ let result=ary[j]>ary[j+1] console.log(`第${j+1}次比较:拿数组第${j}个元素(${ary[j]})与${j+1}个元素(${ary[j+1]})做比较,${result?'是大于,调换两者位置':'保持不动'}`); if(result){ let temp=ary[j]; ary[j]=ary[j+1]; ary[j+1]=temp; } console.log(ary) } console.log(`说明:经过第${i+1}趟比较,已经选出了第${i+1}大的数,是${ary[ary.length-1-i]}`) } console.log('最后一个不用循环了,肯定是最小的了') } let arr=[8,7,9,1,3]; sortAry(arr) </script> </body> </html>
var a=[6,2,4,1,5,9],t; for(var i=0;i<a.length;i++){ for(var j=0;j<a.length-1;j++){ if(a[j]>a[j+1]){ t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } console.log(a)
这两种都是冒泡啦
当然,如果是数组排序的话,还有js内置的sort方法
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <title>hello world</title> </head> <body> <script type="text/javascript"> function sortNumber1(a, b){return a - b} function sortNumber2(a, b){return b - a} var arr = [10,5,40,25,100,1]; document.write(arr.sort()+'<br/>')//默认 document.write(arr.sort(sortNumber1)+'<br/>')//从小到大 document.write(arr.sort(sortNumber2))//从大到小 </script> </body> </html>
出自w3c