//冒泡排序:每次把最大的数字交换到数组末尾
//复杂度:时间:O(n2) 空间O(1)
//交换次数:O(n2)
//稳定性:稳定
//flag用于优化
function bubbleSort(arr){
let flag=false;//做优化,当本次没有交换过数据,那么数组是排好序的情况,不再进行交换
let tmp;//交换数组时中间变量
for (let i=0;i<arr.length;i++){
for (let j=0;j<arr.length-i;j++){
if (arr[j]>arr[j+1]){
//交换
tmp=arr[j]
arr[j]=arr[j+1]
arr[j+1]=tmp
//有交换
flag=true
}
}
//当前一次循环没有做交换
if (!flag){
return arr
}
flag=false//控制下一次优化
}
return arr
}
//测试
console.log(bubbleSort([4,5,9, 1,2,3]));
1.冒泡排序
最新推荐文章于 2024-09-11 15:33:18 发布