冒泡排序
优点:简单 好理解
缺点:性能低,实现流程复复杂
var arr=[5, 14, 100, 1, 4]
交换数组中两个元素的位置
var temp=arr[0] 先把arr[0]的值临时存储
arr[0]=arr[1] 再把arr[1]的值给arr[0]
arr[1]=temp 再把临时存储的arr[0]的值给arr[1]
外层循环执行一次 内层循环全部执行 外层循环 5 内层循环25
for(let i=0;i<arr.length;i++){
for(let j=0;j<arr.length;j++){
相邻的元素比较,如果前一个比后一个大 交换位置
if(arr[j]>arr[j+1]){
var temp=arr[j]
arr[j]=arr[j+1]
arr[j+1]=temp
}
}
}
console.log(arr)
优化后的
for (let i = 0; i < arr.length; i++) {
-1的原因: 如果不-1 最后一次循环arr[j]==4 arr[j+1]==undefined
-i的原因: 减去已经排序好的数字,外层循环一次,就多排序好的数字
arr.length-1-i 让内层的循环每一次循环的次数越来越少
4 + 3 + 2 + 1 = 10次
for (let j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr);