冒泡排序理解

102 阅读1分钟

一.利用for循环做数据插入数组合适位置(使用冒泡排序)

1.概念:在数组中插入一个数据单元可使用冒泡排序,冒泡排序原理即为利用相邻的索引下标依次比较后由从小到大/大到小进行数值比较并在合适位置插入该数据,多次比较后得到排序好的数组 ;

例子:

 var arr = [10, 20, 30, 40, 50];
        var n = 11;
        arr.push(n);
        for(var k =0; k<arr.length-1;k++){
            for(var i=0;i<arr.length-1-k;i++){
            if(arr[i]>arr[i+1]){
                var temp =arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=temp;
                }
            }
        }
        console.log('冒泡排序结束后的arr: ', arr)

A: 基础版操作:

for (var k = 0; k < arr.length; k++) {
            for (var i = 0; i < arr.length; i++) {
                if (arr[i] > arr[i + 1]) {
                    var temp = arr[i]
                    arr[i] = arr[i + 1]
                    arr[i + 1] = temp
                }
        }

B:优化版操作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
                }
        }

内层for循环使得,arr.length-1,让内层循环少循环一步;

C:优化版操作2:

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
                }
        }

外层for循环使得,arr.length-1,让外层循环少循环一步;

D:最终版优化操作:

for(var k=0;k<arr.length-1){
    for(var i=0;i<arr.length-1-k;i++){
        if(arr[i]>arr[i+1]){
        var temp =arr[i];
        arr[i]=arr[i+1];
        arr[i+1]=temp;
        }
    }
}
 console.log('冒泡排序结束后的arr: ', arr)
 

在内层循环中使arr.length-1-k,可少进行K轮比较;