js数组排序

js数组排序

1.冒泡排序

  1. 规则:两两比较,大的放后面

  2. 比较过程:
    0-1 1-2 2-3 3-4
    ①第一次两两比较 (第0位和第1位比较,第1位和第2位比较,第2位和第3位比较,第3位和第4位比较)
    结果:把最大值换到了最后
    0-1 1-2 2-3
    ② 第2次两两比较(最后一位不参加比较,因为已经是最大值)
    结果:把第二大值换到了倒数第二位
    0-1 1-2
    ③第3次两两比较(最后一位和倒数第二位不参加比较)
    结果:把第三大值换到了倒数第三位
    0-1
    ④第4次两两比较(最后一位、倒数第二位和倒数第三位不参加比较)
    结果:把第三大值换到了倒数第三位

  3. 分析:
    4行:length5-1
    列:1:length5-1-0 i
    列:2:length5-1-1 i
    列:3:length5-1-2 i
    列:4:length5-1-3 i
    多行多列:循环嵌套
    外层循环控制行
    内层循环控制列

  4. 代码


<script>
var arr = [6,3,2,4,1];
console.log(arr);
                // 大循环,确定执行几轮(确定行)
                for(var i=0;i<arr.length-1;i++){
                    // 小循环,每轮执行多少次(每行的列)
                    for(var j=0;j<arr.length-1-i;j++){
                        // 开始判断了,将当前位置和后一位作比较,大的放后面
                        if(arr[j] > arr[j+1]){  
                            // 交换  将大数换到后面,借助ls这个新的变量来交换
                            var ls = arr[j];
                            arr[j] = arr[j+1];
                            arr[j+1] = ls;
                        }
                    }
                }
                console.log(arr);
</script>

2.选择排序

1.规则:每次拿出一个数据,和剩下的其他所有数据相比较,得到大的或小的,与 初始位置做交换,比如,拿出第一位和后面所有作比较,找到最小的,放在第一位,第一位原本的值,放在最小的值得原来的位置。
2.比较:
①: 0-1 0-2 0-3 0-4
第0位和第1位比较,第0位和第2位比较,第0位和第3位比较,第0位和第4位比较。
结果:会得到一个最小值,将这个最小值放在第一位
②:1-2 1-3 1-4
第1位和第2位比较,第1位和第3位比较,第1位和第4位比较。
结果:会得到一个第二小的值,而且放在了第二位
③:2-3 2-4
结果:会得到一个第三小的值,而且放在了第三位
④:3-4
结果:会得到一个第四小的值,而且放在了第四位
3. 分析:
外层循环的次数:length-1
内层循环:
1:i ~ length-1
2:i ~ length-1
3:i ~ length-1
4:i ~ length-1


<script>
    var arr = [3,4,5,2,1];
       for(var i=0;i<arr.length-1;i++){
        // 两个意思:
        // ①假设,将第一位保存出来,用来和后面所有作比较
        // ②假设,第一位是最小值
        var iNow = arr[i];
        // ②立即将假设的最小值的位置,也存出来
        var iNowIndex = i;
        // j如果等于i,j就等于i等于0了,就自己和就自己比较了
        for(var j=i+1;j<arr.length;j++){  
            // ②验证假设第一位是最小的正确性,不正确,就拿到比假设的值还小的值
            if(iNow > arr[j]){
                iNow = arr[j];
                // 此时 arr[j]最小了,所以保存最小的位置j
                iNowIndex = j;   
                // 保存最小值得位置
            }
        }
        // 小循环执行结束后,iNow必然是最小值,此时此刻数组还没有发生变化
        // 交换位置:
        var ls = arr[i];
        arr[i] = iNow;
        // 交换位置:上面是将最小值,放在第一位
        // 第一位原本的数据,放在原本最小值的位置
        arr[iNowIndex] = ls;
    }

    console.log(arr);
</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值