数组的冒泡排序


冒泡排序

JS的冒泡排序(用于数组操作):

通过多层for循环对数组中的数据进行排序的操作,也可以进行一些操作。

下面通过俩个冒泡排序的案例来进行理解

// 从第一个元素开始往后删除的元素只能比该元素小,不能比该元素大 且计数进行了多少  // 次外层循环操作

let arr = [1000,3330,2200,3350,210,110,354,456,12,33,21,43];

/**

* 例 :

* 1000 210 110 12

* 3330 2200 354

* 3350 456 33 21

* 43

**/

console.log("数组长度:" + arr.length)

var num = 0;

// 循环数组

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

    var first = arr[i];

    // 内层循环( 让该元素与后面的所有元素都比较一次 )

    for(let j = 1; j < arr.length; j++){

        console.log(j)

        console.log(`第 ${i} 次` + arr[j])

        if(first > arr[j]){

            // console.log("冒牌排序:" + first,arr[j])

            // 重新赋值给first 便于继续往后比较 first = arr[j]

            // 删除数组对应的下标 继续执行循环

            arr.splice(j,1)

            j--;

        }

    } num = i + 1;

}

console.log(num)

案例2:数组中的两项去相加 只要相加的和等于数组中的数据 那么返回true

// 定义数组用于遍历

let arr = [1,24,2,5,23,55];

// 定义函数

function fn1(target){

    // 设置flag值 用于返回

    var flag = false;

    // 循环数组

    for(let i = 0; i < target.length; i++) {

        // 获取数组中的数据

        let tar = target[i];

        // 内层循环

        for(let j = 1; j < target.length; j++){

            // 让外层的数据与内层的数据相加

            let sum = tar + target[j];

            // 利用数组的includes函数来判断是否有当前这个数据

            if(arr.includes(sum)){  

                // 有这个数据则将flag值设置为true       

                console.log("成功")

                flag = true;

            }

        }

    }

//    返回flag

return flag;

}

console.log(fn1(arr))

总结: 数组的一个冒泡排序一般二层循环就够用。主要是外层循环与内层循环进行一个数据的联动( 进行排序,大小比较,数据类型排序 ) 也可以根据数组的一些方法来进行更多复杂的操作。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容