冒泡排序:
数值小的慢慢向上浮起,形同冒泡,即升序排列数值
实现过程:
相邻数值两两交换,每轮冒泡(循环)把最小/大的数放在最后。
从第一个数值开始,如果相邻两个数的排列顺序与我们的期望不同,则将两个数的位置进行交换(对调);
如果其与我们的期望一致,则不用交换。
重复这样的过程,一直到最后没有数值需要交换,则排序完成。
关键点:
冒泡排序的轮次 最大为 n-1
每轮的交换次数 最大为 n-1,n-2,n-3,....1
图解:
代码实例:
//冒泡排序 升序 var arr=[3,5,4,6,1,2] //比较轮数 for(var i=0;i<arr.length-1;i++){ //每轮比较次数 for(var j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ if(arr[j]>arr[j+1]){ //借助第三方变量temp交换两个变量的值 var temp=arr[j];//当前值 //通过比较相邻位置互换 arr[j]=arr[j+1];//把后一位值向前移一位 arr[j+1]=temp;//把当前一位值向后移一位 } } }
} console.log(arr);//输出结果[1,2,3,4,5,6]
简单封装
//封装 function compare(arr){ //比较轮数 for(var i=0;i<arr.length-1;i++){ //没轮比较次数 for(var j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ //借助第三方变量temp交换两个变量的值 var temp=arr[j];//当前值 //通过比较相邻位置互换 arr[j]=arr[j+1];//把后一位值向前移一位 arr[j+1]=temp;//把当前一位值向后移一位 } } } return arr; } console.log(compare([5,6,5,2,8,9])); //输出[2, 5, 5, 6, 8, 9]
数组排序其他方法
sort()
var arr=[3,5,4,6,1,2] //sort() function sortNumber(a,b){ //return a-b;//升序 return b-a;降序 } console.log(arr.sort(sortNumber));//输出[6, 5, 4, 3, 2, 1]