// 1. 在未排序序列中找到最小（大）元素
// 2. 存放到排序序列的起始位置
// 3. 从剩余未排序元素中继续寻找最小（大）元素
// 4. 然后放到已排序序列的末尾
// 5. 以此类推，直到所有元素排序完毕

var arr = [
    2,
    1,
    9,
    6,
    4,
    3
]

// 每找出一个最小元素，将此元素添加进临时数组, 并在原数组中删除此元素，继续遍历，直到原数组的长度为0
function selectionSort(arr) {
    let temp = [], // 存放最小的元素，每次push进去
        len = arr.length
    while (temp.length < len) {
        let min = Math.min(...arr) // 当前数组的最小元素
        temp.push(min)
        arr.splice(arr.indexOf(min), 1) // 移除最小元素
    }
    return temp
}

// 插入排序
function insertSort(arr) {
    for (let i = 1; i < arr.length; i++) {
        let currentData = arr[i],
            preIndex = i - 1; // 从当前元素的前一`个开始比较
        while (preIndex >= 0 && arr[preIndex] > currentData) {
            arr[preIndex + 1] = arr[preIndex]; // 互换位置，但是currentData已经存储，所以不用考虑arr[preIndex]的值
            preIndex--;
        }
        arr[preIndex + 1] = currentData;
    }
    return arr
}

function bubbleSort(arr) {
    for (let i = 0; i < arr.length; i++) {

    }
}

console.log(bubbleSort(arr));
@@ -119,50 +119,24 @@
  = %5B
-%0A    2,%0A    1,%0A    9,%0A    6,%0A    4,%0A   
+2, 1, 9, 6, 4,
  3
-%0A
 %5D%0A%0A/
@@ -947,22 +947,266 @@
  i++) %7B%0A
-%0A    %7D
+        for (let j = 0; j %3C arr.length - 1; j++) %7B%0A            if (arr%5Bj%5D %3E arr%5Bj + 1%5D) %7B // %E7%9B%B8%E9%82%BB%E5%85%83%E7%B4%A0%E4%B8%A4%E4%B8%A4%E7%9B%B8%E6%AF%94%0A                let temp = arr%5Bj%5D%0A                arr%5Bj%5D = arr%5Bj + 1%5D%0A                arr%5Bj + 1%5D = temp%0A            %7D%0A        %7D%0A    %7D%0A    return arr
 %0A%7D%0A%0Acons

add bubbleSort