25,468
社区成员




循环数组,比较当前元素和上一个元素,如果当前元素比上一个元素小,向下冒泡。
这样一次循环之后最前一个数就是本数组最小的数。
下一次循环继续上面的操作,不循环已经排序好的数。
优化:当一次循环没有发生冒泡,说明已经排序完成,停止循环。
function bubbleSort(array) {
//第一个循环是所需次数
for (let j = 0; j < array.length; j++) {
let complete = true;
for (let i = array.length-1; i>j; i--) {
// 比较相邻数
if (array[i] < array[i -1]) {
[array[i], array[i - 1]] = [array[i - 1], array[i]];
complete = false;
}
}
// 没有冒泡结束循环
if (complete) {
break;
}
}
return array;
}