前端面試中必不可少的技能
/**
* 高效率冒泡排序
* 外層for循環控制循環次數
* 內層for循環負責相鄰兩數交換位置,找到最大數,排到最後
* 設置done標誌位,減少不必要循環
*/
var arr = [1, 3, 4, 90, 8, 49, 0];
var max = arr.length - 1;
for (var j = 0; j < max; j++) {
var done = true;
// 這裏可以根據外層的j 逐漸減少內層遍歷
// 因爲每次遍歷置於最後的元素 不需要在參加遍歷 [1, 3, 4, 0, 8, 49, 90]
for (var i = 0; i < max - j; i++) {
if (arr[i] > arr[i + 1]) {
var temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
done = false;
}
}
if (done) {
break;
}
}