基本思想:数组中的数从一头开始往另一头遍历,每次比较相邻两个数,比完之后根据条件进行换位或者进行下次比较,一次遍历完之后,最大的或者最小的数会到达自己的位置,n次遍历之后每个数都会找到自己的位置(n指数组长度)
下面使用改进过的冒泡排序,如果一次遍历之后没有变换位置,则说明该数组已经是排好序的,直接返回,否则,继续遍历数组,每次遍历后因为一个数找到了自己的位置,下次遍历的时候就只会遍历到这个数前面(或后面)
function bubbleSort(arr){
let tag = true;//标记判断一次遍历是否有数进行换位
let length = arr.length;//优化效率
for(let i = 0; i < length; i++){
tag = true;
for(let j = 0; j < length - i - 1; j++){
if (arr[j] > arr[j+1]) {
tag = false;//换位之后标记值改变
let temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
if (tag) {
return arr;
}
}
return arr;
}
时间复杂度:O(n2);