web前端 js学习 第七天 (数组--冒泡,选择排序)

 基本数据类型存储在栈内存中  -- 存储的是值

 引用数据类型存储在堆内存中  -- 存储的是地址

    数组的深拷贝和浅拷贝
        浅拷贝实际上拷贝的是地址
        深拷贝实际上拷贝的是值

数值常用方法2:

    splice   删除/替换/插入元素   --- 直接改变原数组   -- 返回被删除的数据,得到的是数组
    concat  合并多个数组   -- 不会改变原数组
    join  数组变成字符串
    reverse   数组反向 
    includes  判断时否包含某个值
    indexOf   判断时否包含某个值,返回角标,找不到就返回-1
    slice(index,index) 截取数组,包含前面的角标不含后面的角标,不写第二个参数(截取后面所有的)
  举例:  
splice(index,howmany,) 
    splice(index,howmany)  删除
    splice(index)  删除后面所有的
    splice(index,howmany,item) 替换
    splice(index,0,item) 插入
   var arr1 = [2, 3, 4, 5];
    arr1.splice(2,2);
    console.log(arr1)
    arr1.splice(1);
    console.log(arr1)
    arr1.splice(2,0,'hello','hi');
    console.log(arr1);


    var res = arr1.splice(2,1);
    console.log(arr1);
    console.log(res)


    var arr1 = [2,3,4];
    var arr2 = ['a','b'];
    var arr3 = ['hello','hey'];
    var re3 = arr1.concat(arr2,arr3);
    console.log(re3)



    var arr = ['a','b','c'];
    var res = arr.join('&&');
    console.log(res);

    var arr = ['a','b','c'];
    console.log(arr.reverse())

    var arr = ['a','b','c'];
    var res = arr.includes('a');
    console.log(res);

冒泡排序

分析:
// [2,3,6,9,11]  排序
    // 9,6,3,2,11  

    // 第一趟
        // 9 6      6 9 3 2 11
        // 9 3      6 3 9 2 11
        // 9 2      6 3 2 9 11
        // 9 11     6 3 2 9 11    

    // 第二趟
        // 6 3     3 6 2 9 11
        // 6 2     3 2 6 9 11 
        // 6 9     3 2 6 9 11  
    
    // 第三趟
        // 3 2     2 3 6 9 11
        // 3 6     2 3 6 9 11 

    // 第四趟
        // 2 3     2 3 6 9 11 

    // 冒泡排序 -- 相邻的数进行比较
var arr = [9,6,3,2,11] ;
   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 t ; 
                t = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = t
            }
        }
    }
    console.log(arr)

选择排序

分析
  // 拿第一个位置上的数与后面所有的数进行比较
    // 第一趟
        // 9 8    8 9 7 6 5
        // 8 7    7 9 8 6 5
        // 7 6    6 9 8 7 5
        // 6 5    5 9 8 7 6  最小值

    // 第二趟
        // 9 8   5 8 9 7 6
        // 8 7   5 7 9 8 6
        // 7 6   5 6 9 8 7
    
    // 第三趟
        // 9 8   5 6 8 9 7
        // 8 7   5 6 7 9 8

    // 第四趟
        // 9 8  5 6 7 8 9
var arr = [9,8,7,6,5] ;
for(var j = 0 ; j < arr.length - 1 ; j++){
            for(var i = j + 1 ; i < arr.length ; i++){
                if(arr[j] > arr[i] ) {
                    var t = arr[j];
                    arr[j] = arr[i];
                    arr[i] = t
                }
            }
        }
        console.log(arr)

选择排序(最大最小交换)

分析:
 // var min = 0
        // 9 8   min = 8对应的位置
        // 8 7   min = 7对应的位置
        // ....
        //   min 5对应的位置
        // 5个9进行交换    5 8 7 6 9

    // var min = 1
        // 9 8   min = 8对应的位置
        // 8 7   min = 7对应的位置
        // ....
        //   min 5对应的位置
        // 5个9进行交换
var arr = [9,8,7,6,5] ;
 // 减少交换次数
    for(var i = 0 ; i < arr.length - 1 ; i++){
        // 假设最小值的角标
        var min = i ;
        // 找到最小值的角标
        for(var j = i + 1 ; j < arr.length ; j++) {
            if(arr[min] > arr[j]){
                min = j
            }
        }
        // 交换
        if(min != i) {
            var t = arr[min];
            arr[min] = arr[i];
            arr[i] = t
        }
    }
    console.log(arr)

数组的应用:(数字字母密码随机)

   // 随机取出数组中的一个值
        // 只能通过角标

    var arr = ['a','b','c','d','e'];
    // 随机取出一个数  0 ~ arr.length-1
    var index = parseInt(Math.random() * arr.length) ;
    console.log(arr[index]);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值