冒泡排序

215 阅读1分钟

什么是冒泡排序( bubble sort)

  • 将一组随机数据按照升序或者降序方式进行排序
 var arr = [9, 3, 6, 2, 4, 1, 8, 5, 7]
 // 下标   0  1  2  3   4  5  6  7  8
 // 优化1
 for (var k = 0; k < arr.length; k++) {
            for (var i = 0; i < arr.length - 1; i++) {
                if (arr[i] > arr[i + 1]) {
                    var temp = arr[i]
                    arr[i] = arr[i + 1]
                    arr[i + 1] = temp
                }
            }
        }
// 优化2
        
 * k == 01 次循环 确定了 [8] 的值
 * k == 12 次循环 确定了 [7][8] 的值
 * k == 23 次循环 确定了 [6][7][8] 的值
 * k == 34 次循环 确定了 [5][6][7][8] 的值
 * k == 45 次循环 确定了 [4][5][6][7][8] 的值
 * k == 56 次循环 确定了 [3][4][5][6][7][8]值
 * k == 67 次循环 确定了 [2][3][4][5][6][[8] 的值
 * k == 78 次循环 确定了 [1][2][3][4][5][6][[8] 的值
 * k == 89 次循环 确定了 [0][1][2][3][4][5][[7][8] 的  * 值  
    for (var k = 0; k < arr.length - 1; k++) {
        for (var i = 0; i < arr.length - 1; i++) {
            if (arr[i] > arr[i + 1]) {
                var temp = arr[i]
                arr[i] = arr[i + 1]
                arr[i + 1] = temp
            }
             }
         }
// 优化3
        for (var k = 0; k < arr.length - 1; k++) {
            console.log(`这是第 ${k + 1} 轮循环(k == ${k})`)
            for (var i = 0; i < arr.length - 1 - k; i++) {
                console.log(arr[i], arr[i + 1])
                if (arr[i] > arr[i + 1]) {
                    var temp = arr[i]
                    arr[i] = arr[i + 1]
                    arr[i + 1] = temp
                }
            }
        }
        console.log('冒泡排序结束后的arr: ', arr)