5、数组(下)

1、数组里面存数组

image

            var num1 = 10;
            var str = "hello";
            var isYes = true;
            var arr1 = [10, 20, 30,[50, 60]];
            var arr = [num1, str, isYes, arr1];

            // alert(arr[3][2]);
            // alert(arr[3][3][1]);


            // alert(arr); //10,hello,true

            // alert(arr[3]);
            /*var tmpArr = arr[3];
            alert(tmpArr);
            alert(tmpArr[1]);
            alert(arr[3][1])*/

==【注】在数据中的元素,可以存储任意数据类型的数据。==

2、二维数组 习题

  通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角。试编程。

                1、声明数组arr  一共  五个元素  这五个元素都是数组
                2、下标为0的这个元素  arr[0] = [1, 2, 3, 4, 5];
            /*  arr[0] = [1, 2, 3, 4, 5];
                arr[1] = [6, 7, 8, 9, 10];
                arr[2] = [11, 12, 13, 14, 15];
                arr[3] = [16, 17, 18, 19, 20];
                arr[4] = [21, 22, 23, 24, 25];
            */
            var arr = [];
            var tmp = 1; //用于累加的数 1 -> 25
            for(var i = 0; i < 5; i++){
                var newArr = [];
                //给newArr填充五个数据
                for(var j = 0; j < 5; j++){
                    newArr.push(tmp++);
                }
                arr.push(newArr);
                //arr[[], [], [], [], []];
            }

            // alert(arr[0]);


            for(var i = 0; i < arr.length; i++){
                //1、分别输出每一个arr中元素,并换行
                // document.write(arr[i]);
                
                //2、将tmpArr中的每一个数输出
                for(var j = 0; j < arr[i].length; j++){
                    if(j <= i){
                        document.write(arr[i][j] + "&ensp;");
                    }
                }


                document.write("<br />");
            }
            
            
            
            /*
                1、求数组中所有元素的和;
                2、让数组中的元素交换位置(重要) arr[1] arr[3]交换值;
                3、求数组的最大数和最小数(重要) max   min
                4、求数组的最小数的下标(重要)index
            */

            var arr = [4, 5, 2, 3, 1];
            var sum = 0;
            for(var i = 0; i < arr.length; i++){
                sum += arr[i];
            }
            // alert(sum);

            var tmp = arr[1];
            arr[1] = arr[3];
            arr[3] = tmp;
            // alert(arr); //1,2,5,4,3


            // 最大数
            var max = arr[0]; //假设第一个元素,最大
            var min = arr[0]; //假设第一个元素,最小
            var index = 0;
            for(var i = 1; i < arr.length; i++){
                /*if(arr[i] > max){
                    max = arr[i];
                }*/
                if(arr[i] < min){
                    min = arr[i];
                    index = i;
                }
            }

            // alert(max);
            alert(min);
            alert(index);

3、排序

/*
reverse()
直接将原数组逆序。直接修改了原数组。
格式:数组.reverse();
*/

        /*var arr = [30, 20, 10, 5, 50, 100];
        arr.reverse();
        alert(arr); //100,50,5,10,20,30*/

/*
sort()
排序
数组.sort(); 升序。
【注】不好用,默认是使用字符串排序。所以我们不用。
*/

    /*      var arr = [5, 4, 3, 7, 8, 9];
        arr.sort();
        alert(arr); //3,4,5,7,8,9*/

        var arr = [5, 15, 10, 1];
        arr.sort();
        alert(arr); //1,10,15,5

4、冒泡法

/*
数据结构:数据排序算法。
冒泡排序
选择排序(固定写法)
*/

/*
冒泡排序的思路:
思路:输入6个无序的数字,从头到尾依次比较相邻两个数字大小,若大数在前、小数在后,则交换两数位置,依次比较,使全部数据按从小到大排列。

            一共有6个数,比较5轮。

            第一轮: 5次
                9, 8, 7, 6, 5, 4
                8, 9, 7, 6, 5, 4
                8, 7, 9, 6, 5, 4
                8, 7, 6, 9, 5, 4
                8, 7, 6, 5, 9, 4
                8, 7, 6, 5, 4, 9
            第二轮: 4次
                8, 7, 6, 5, 4
                7, 8, 6, 5, 4
                7, 6, 8, 5, 4
                7, 6, 5, 8, 4
                7, 6, 5, 4, 8
            第三轮:3次
                7, 6, 5, 4
                6, 7, 5, 4
                6, 5, 7, 4
                6, 5, 4, 7
            第四轮: 2次
                6, 5, 4
                5, 6, 4
                5, 4, 6
            第五轮:1次
                5, 4
                4, 5
        */

        var arr = [9, 8, 7, 6, 5, 4];

        //  冒泡排序
        //1、确定比较多少轮 = 数组长度 - 1;
        for(var i = 0; i < arr.length - 1; i++){
            //2、这一轮比较的次数 = 数组长度 - 当前轮数(i + 1);
            for(j = 0; j < arr.length - (i + 1); j++){
                if(arr[j] > arr[j + 1]){
                    //交换两个数的位置
                    var tmp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = tmp;
                }
            }
        }
        alert(arr); //4,5,6,7,8,9

5、选择排序

/*
选择排序

            打擂台法:
             将每一个擂台拿出来,跟后面所有的元素,进行比较,符合交换条件,交换位置。

        第一轮:  五次
             9, 8, 7, 6, 5, 4
             8, 9, 7, 6, 5, 4
             7, 9, 8, 6, 5, 4
             6, 9, 8, 7, 5, 4
             5, 9, 8, 7, 6, 4
             4, 9, 8, 7, 6, 5
        第二轮:  四次
                9, 8, 7, 6, 5
                8, 9, 7, 6, 5
                7, 9, 8, 6, 5
                6, 9, 8, 7, 5
                5, 9, 8, 7, 6

        第三轮:  三次
                   9, 8, 7, 6
                   8, 9, 7, 6
                   7, 9, 8, 6
                   6, 9, 8, 7

        第四轮:  二次
                      9, 8, 7
                      8, 9, 7
                      7, 9, 8

        第五轮:  一次
                         9, 8
                         8, 9

            【注】选择,自己尝试编写。
        */
        var arr = [9, 8, 7, 6, 5, 4];
        for(var i = 0; i < arr.length - 1; i++){
            for(var j = i + 1; j < arr.length; j++){
                if(arr[i] > arr[j]){
                    var tmp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = tmp;
                }
            }
        }

        alert(arr); //4,5,6,7,8,9
    

6、join

/*
功能:将数组 => 字符串
将数组中的元素拼接成字符串
格式:数组.join("字符串");
值:拼接成的字符串
不改变原数组
*/

        var arr = [1, 2, 3, 4, 5];
        var str = arr.join("+");
        // alert(str);//1+2+3+4+5


        /*
            1、随机给出一个五位以内的数,然后输出该数共有多少位,每位分别是什么
        */
        var num = 12345;
        /*
            将数字num的每一位取出。


        */
        var arr = []; //用来存储取下来的每一位。
        while(1){
            if(num == 0){
                break;
            }
            //个位如何取
            arr.push(num % 10);
            num = parseInt(num / 10);
        }
        arr.reverse();
        alert(arr.length);

7、join进阶

/*
功能:将数组 => 字符串 将数组中的元素拼接成字符串
格式:数组.join("字符串");
值:拼接成的字符串
*/

        var arr = [1, 2, 3, 4, 5];
        var str = arr.join("+");
        // alert(str);//1+2+3+4+5


        /*
            1、随机给出一个五位以内的数,然后输出该数共有多少位,每位分别是什么
        */
        var num = 12345;
        /*
            将数字num的每一位取出。


        */
        var arr = []; //用来存储取下来的每一位。
        while(num){
            //个位如何取
            arr.push(num % 10);
            num = parseInt(num / 10);
        }
        arr.reverse();
        alert(arr.length);

猜你喜欢

转载自www.cnblogs.com/zhongchao666/p/9275476.html
今日推荐