冒泡排序是算法中最普通的一种,冒泡的原理就是利用循环比较数组中前一项和后一项的大小,把大项排在最后面,从而实现从小到大的排列顺序
具体实现步骤就是,利用双层for循环,第一层循环控制-循环比较的总次数,就是数组的长度减1,第二层循环-控制前后项交换比较的次数,举例来说,数组长度为5,那么第一次循环,前后项交换比较是4次,第二次前后项交换比较是3次,依此类推,内层for循环的条件控制应该为数组length-i-1,这是根据规律判断的。
在不减i的情况下,直接进行双层for循环也能实现数组排序,但是总的来说,循环判断条件减i的性能更高,因为内层循环前后项数据每交换一次,已经把前一项最大的值放在最后一项了,交换次数是逐渐递减的,所以判断的次数也是需要递减变化的,在判断条件不减i不变化的情况下,循环结束的条件判断就是固定为length-1是4次, 这样会导致不必要的重复性比较。
var arr = [1,8,6,5,3,2,9]
arr.forEach((value,index)=>{
if(arr[index]>arr[index+1]){
arr[index][index+1] = arr[index+1][arr[index]]
}
})
console.log(arr);
var arr1 = [5, 4, 3, 2, 1]
for (var i = 0; i < arr1.length - 1; i++) {
for (var j = 0; j < arr1.length - 1; j++) {
if (arr1[j] > arr1[j + 1]) {
[arr1[j], arr1[j + 1]] = [arr1[j + 1], arr1[j]]
}
}
}
console.log(arr1);