// 空间复杂度:O(1)
    // 时间复杂度:是一个算法执行所耗费的时间
    // 空间复杂度:运行完一个程序所需要的内存大小
    // 稳定性:如果a=b,a在b的前面,排序后a仍然在b的前面
    // 不稳定性:如果a=b,a在b的前面,排序后a和b可能交换位置
    //基础冒泡写法—-时间复杂度O(n*n)
    var arr = [1, 5, 7, 3];
    //外层循环次数,遍历数组
    for (var i = 0; i < arr.length - 1; i++) {
    //里层循环找到最大的数,进行一次完整排序
    //根据外层for循环的i,逐渐减少内层for循环的次数
    for (var j = 0; j < arr.length - 1 - i; j++) {
    if (arr[j] > arr[j + 1]) {
    var temp = arr[j];
    arr[j] = arr[j + 1];
    arr[j + 1] = temp;
    }
    }
    }
    console.log(arr);
    //优化冒泡写法——时间复杂度O(n)
    var arr1 = [2, 9, 3, 6];
    function optimization(arr1) {
    for (var i = 0; i < arr1.length - 1; i++) {
    //这里设置一个标志位
    var sign = true;
    for (var j = 0; j < arr1.length - 1 - i; j++) {
    //当有比较时,进入if进行比较,当有些数组不用太多次比较时,如[1,2,4,3]
    //只比较一次就可以跳出循环,不用浪费时间进行全部比较
    if (arr1[j] > arr1[j + 1]) {
    var temp = arr1[j];
    arr1[j] = arr1[j + 1];
    arr1[j + 1] = temp;
    sign = false;
    }
    }
    if (sign) {
    break;
    }
    }
    return arr1;
    }
    optimization(arr1);
    // 总结:
    // 外层循环控制次数,内层循环寻找最大数排序,设置一个标志位,减少不必要的循环