循环数组、二维数组、冒泡排序、选择排序

数组案例

循环数组

数组的成员: 组成数组的每一个值都是数组的成员

    var arr = [1, 2, 3, 4, 5];
数组的每一个成员都可以是任意的值内容,但是推荐在数组中存放同类型的数据
循环
    for (var i = 0; i < arr.length; i++) {
        console.log(arr[i]);
    }
    // 第一次循环: i 0   arr[i] 读取数组的第0项
    // 第二次循环: i 1   arr[i] 读取数组的第1项
    // ……
    // 最后依次循环 i arr.length - 1  arr[i] 读取的是数组的最后一项 

    // 在循环时 只读取下标为偶数的那些
    for (var i = 0; i < arr.length; i += 2) {
        console.log(arr[i]);
    }

    // 在循环时 只读取下标为奇数的那些
    for (var i = 1; i < arr.length; i += 2) {
        console.log(arr[i]);
        }

循环生成一个由2 ~ 60之间的偶数组成的数组

    // 分析: 定义一个数组 
        var arr = [];
        // 循环给它赋值
         for (var i = 0; i < 30; i++) {
             arr[i] = (i + 1) * 2;
         }
        // 下标与成员之间的对应关系
        // 0 2
        // 1 4
        // 2 6
        // 3 8
        // ...
        // 29 60
        // 输出
         console.log(arr);

二维数组

    我们平时定义的数组,都是一维数组
        // 定义一排学生的名称
         var arr = ["张三", "李四", "王五", "赵六", "田七"];
         var erwei = [
             ["张三0", "李四0", "王五0", "赵六0", "田七0"],
             ["张三1", "李四1", "王五1", "赵六1", "田七1"],
             ["张三2", "李四2", "王五2", "赵六2", "田七2"],
             ["张三3", "李四3", "王五3", "赵六3", "田七3"],
             ["张三4", "李四4", "王五4", "赵六4", "田七4"],
             ["张三5", "李四5", "王五5", "赵六5", "田七5"],
             ["张三6", "李四6", "王五6", "赵六6", "田七6"]
         ];
         console.log(erwei);
        // 想要获取二维数组的某一个一维数组的成员 必须先得到对应的一维数组
         console.log(erwei[3])
        // 再根据这个一维数组加下标获取对应的成员
         console.log(erwei[3][2])

冒泡排序

有一个数组 数组中都是数值 请从小到大排序
        var arr = [10, 189, 999, 20, 14, 6, 88, 190, 54];
        // => [6, 10, 14, 20, 54, 88, 190]

        // 思路:
        // 循环两两比较 如果第一个数比第二个数大 就换位置 否则不换
        // 循环这么一次 已经将最大的数放到了最后 
        // 注: arr.length - 1 是因为一次循环要使用两个值 当前值 和下一个值 所以为了保证最后一次有两个值 所以要-1
        // 循环一次能够确定一个最大的数
        for (var j = 0; j < arr.length - 1; j++) {
            for (var i = 0; i < arr.length - 1 - j; i++) {
                console.log("第" + i + "次循环", arr[i], arr[i + 1]);
                if (arr[i] < arr[i + 1]) {
                    // 换位置
                    var temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = temp;
                }
            }
        }
        console.log(arr);

选择排序

选择排序
    思路:假定0就是最小的 定义一个索引指向0 挨个比较 如果它比别的数大 就将索引 指向更小的数
    再拿着这个新数从这个新数往后比较 直到最后 这么一轮下来就能够确定一个最小的数
    将0位置与该数位置更换4
    第二轮 假定1是第二小的数 定义一个索引只想1 挨个比较 如果比别的数大 就将索引 指向更小的数
    再拿着这个新数从这个新数往后比较 直到最后 这么一轮下来就能够确定一个第二小的数
    依次类推
    举例说明
        var arr = [10, 17, 5, 88, 54, 0, 23, 11, -10, 9];
        // 先拿着10 与后面的数比较 如果10比5大 说明10不是最小的 于是将索引指向5 拿着5继续往后比 如果又遇见了比5还小的数
        // 更换索引 继续拿着新数往后比较  一轮下来确定一个最小的数
        // 定义索引 用于指向最小的数字的下标
        var index = 0;
        // // 定义已经循环了几轮 已经有几个数排好顺序
        var sub = 0;
        // // 开始循环
        for (var i = 1; i < arr.length; i++) {
        //     // 判定 如果当前index指向的不是最小的 就让它指向最小的
            if (arr[index] > arr[i]) {
                index = i;
            }
        }
        console.log(index);
        // // 当循环结束之后index已经指向最小的 于是就换位
        var temp = arr[sub];
        arr[sub] = arr[index];
        arr[index] = temp;
        // 以上代码是第一轮的执行经过
    	var arr = [10, 17, 5, 88];
        // 以下代码是多次执行的经过
        for (var j = 0; j < arr.length - 1; j++) {
            // 定义索引 用于指向最小的数字的下标
            var index = j;
            // 定义已经循环了几轮 已经有几个数排好顺序
            var sub = j;
            // 开始循环
            for (var i = j + 1; i < arr.length; i++) {
                // 判定 如果当前index指向的不是最小的 就让它指向最小的
                if (arr[index] > arr[i]) {
                    index = i;
                }
            }
            console.log(index);
            // 当循环结束之后index已经指向最小的 于是就换位
            var temp = arr[sub];
            arr[sub] = arr[index];
            arr[index] = temp;
        }
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值