2021-07-07

冒泡排序和选择排序
冒泡排序:
规则:两两比较,大的数据放后面
var arr = [6,3,2,4,1];
两两比较:下面列出来的这个结构,是比较次数,不是数据
0-1 1-2 2-3 3-4 必然得到最大值,并且放在了最后
0-1 1-2 2-3 必然得到第二大的值,并且放在了倒数第二位
0-1 1-2
0-1

            // 4行:length5-1

            // 列:1:length5-1-0       i
            // 列:2:length5-1-1       i
            // 列:3:length5-1-2       i
            // 列:4:length5-1-3       i

            // 多行多列:循环嵌套
            // 外层循环控制行
            // 内层循环控制列
            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]){
                        // 交换
                        var ls = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = ls;
                    }
                }
            }
            console.log(arr);

选择排序:
规则:规则:每次拿出一个数据,和其他所有数字相比较,得到大的或小的,与初始位置做交换,比如,拿出第一位和后面所有作比较,找到最小的,放在第一位,第一位原本的值,放在最小的值得原来的位置
确定次数,再写代码
0-1 0-2 0-3 0-4 必然会得到一个最小值,而且放在了第一位
1-2 1-3 1-4 必然会得到一个第二小的值,而且放在了第二位
2-3 2-4
3-4

外层循环的次数:length-1
内层循环:
1:i ~ length-1
2:i ~ length-1
3:i ~ length-1
4:i ~ length-1

for(var i=0;i<arr.length-1;i++){
     假设,将第一位保存出来,用来和后面所有作比较
    假设,第一位是最小值
    var iNow = arr[i];
    立即将假设的最小值的位置,也存出来
    var iNowIndex = i;

    for(var j=i+1;j<arr.length;j++){
     验证假设第一位是最小的正确性,不正确,就拿到比假设的值还小的值
        if(iNow > arr[j]){
            iNow = arr[j];
            iNowIndex = j;
        }
    }

小循环执行结束后,iNow必然是最小值,此时此刻数组还没有发生变化
var ls = arr[i];
arr[i] = iNow;
上面是将最小值,放在第一位
第一位原本的数据,放在,原本最小值的位置,原本最小值得是哪呢?
arr[iNowIndex] = ls;
}

console.log(arr);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值