冒泡算法

这俩天在疯狂的补JS知识,看到冒泡算法,也没看着网上的来就试着自己写了一个。实现是没什么问题,但是观察本质就有点难受,看到数组的交换动向让我迷惑,自己明明是想把最小的数往前排,看到数组的动向为啥是大的数先排到前面去了???当时确实是脑壳爆炸。

/**
 * 这种算法的本质就是找到数组中最大的那个数,看看有没有比自己大的,如果有就把他换过来
 * 可以理解为,我外层顺换出来的这个下标最适合谁占有,由于置换过数字,所以中间出来的数据会让人有点迷糊,心里就在想我的代码不是找谁最小吗?怎么最大的先跑前面去了。
 */
 let arr = [222, 10, 20, 5, 3, 23, 54, 3];
 function bubblingModeOne(arr) {
    for (let i = 0; i < arr.length; i++) {
        // console.log(arr)
        for (let j = 0; j < arr.length; j++) {
            // console.log(arr[i])
            if (arr[i] < arr[j]) {
                let sum = arr[i] + arr[j];
                arr[i] = arr[j];
                arr[j] = sum - arr[j];
            }
            // console.log(arr)
        }
        // console.log(arr)
        // console.log("====")
    }
    return arr;
}

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