冒泡排序:数组前后两个元素进行比较,如果前面的元素大于后面的元素就发生交换,第一次遍历数组,最大的就跑到了最前面
优化:检测到没有发生交换时,说明已经排好了顺序,直接返回数组即可
function BubbleSort (originalArray) {
let temp, swapped
//进行浅层复制
const array = [...originalArray]
for(let i = 1; i < array.length; i++) {
// 标记是否发生了交换
swapped = false
for(let j = 0; j < array.length - i;j++) {
if(array[j] > array[j + 1]) {
temp = array[j + 1]
array[j + 1] = array[j]
array[j] = temp
swapped = true
}
}
if(!swapped) {
return array
}
}
return array
}