5、数组(下)

1、数组里面存数组

            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);

原文地址:https://www.cnblogs.com/zhongchao666/p/9275476.html

时间: 2024-10-21 07:34:29

5、数组(下)的相关文章

JS根据数组下表删除元素

//新增根据数组下表remove元素方法 Array.prototype.remove = function(obj){ for(var i=0;i<this.length;i++){ var temp = this[i]; if(!isNaN(obj)){ temp=i; } if(temp == obj){ for(var j=i ;j<length;j++){ this[j] = this[J+1]; } this.length = this.length-1 ; } } }

树状数组(下)

树状数组(下) 目录 树状数组(下) 应用 逆序对 康托展开 逆康托展开 RMQ问题树状数组解法 查询第k小 习题 Preprefix sum 在树状数组(上)中我提到了树状数组的基本操作与变式,现在来看看它的实际应用和一些题目. 应用 逆序对 设\(a\)为一个有\(n\)个数字的有序集(\(n>1\)),其中所有数字各不相同. 如果存在正整数\(i\),\(j\)使得\(1\leqslant i<j\leqslant n\)且\(a[i]>a[j]\), 则有序对\((a[i],a[

给一个整形数组,给出一个值,当这个值是数组某些数字的和,求出数组下标的值

Given an array of integers, find two numbers such that they add up to a specific target number. The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that

对象和函数通过数组下表的形式来访问自身的属性

var obj = {}; obj.a = 12; obj.funa = function(){ console.log(111); } console.log(obj['a']); obj['funa'](); for(var i in obj){ console.log(obj[i]); } 结果: 14 12 17 function (){ console.log(111); }

el-tree中在methods中更新数组,html代码中取不到数组中该下标的值。

比如,我需要通过一个点击事件使该叶子包含的数据隐藏或者是显示,一般通过数组[index]来实现,但是最开始是不知道数组长度的,这就需要在点击的时候给数组赋值,然后即时更新该数组下标的值,控制它的隐藏或显示. 实现效果: 需要实现在点击自己的叶子时,控制该叶子下的数据改变,其他叶子数据不变,不能影响到其他的叶子.所以需要使用数组,唯一下标. 实现代码: 1.html <span class="custom-tree-node" slot-scope="{ node, da

PHP数组的一些常用函数

1---数组中元素值的返回------->array_values(); 2---数组中键名的返回---------->array_keys();      //这两个函数的返回值也同样是数组,下表改变为索引,从0开始 <?php $arr = array( 'brand1'=>'lumia800', 'brand2'=>'lumia900', 'brand3'=>'lumia640xl' );     echo "<pre>";    

js数组的内部实现,迭代器,生成器和内包

js内部实现 在js以外的很多语言中,数组将会隐式占用一段连续的内存空间.这种隐式的内部实现,使得高效的内存使用及高速的元素方法称为可能,而 在javascript中,数组实体是一个对象,所以通常的实现方式并不是占用一段连续的内存空间比较下面2段代码 <script> //代码1 var arr=[]; for(var i=0;i<1e7;i++){ arr[i]=''; } //代码2 var arr={}; for(var i=0;i<1e7;i++){ arr[i]='';

把《c++ primer》读薄(4-2 c和c++的数组 和 指针初探)

督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 问题1.我们知道,将一个数组赋给另一个数组,就是将一个数组的元素逐个赋值给另一数组的对应元素,相应的,将一个vector 赋给另一个vector,也是将一个vector 的元素逐个赋值给另一vector 的对应元素: //将一个vector 赋值给另一vector,使用迭代器访问vector 中的元素 vector<int> ivec(10, 20); vector<int> ivec1; for (vecto

数组自我心得

请输入班级的5个学生的名字(意思是让你把五个学生的名字输入到数组之中其中要用到数组的声明和循环以及回去字符串的函数) String [] names = new String[5];//声明一个长度为5的函数 int i=0;//声明一个变量i for(i=0;i<nums.length;i++){ System.out.println("请输入第"+(i+1)+"个学生的名字") nums[i]=input.next//將顾客输入的字符串赋值给相对应序号的值

HashMap简单源码及多线程下的死循环

主要记录hashMap的一些基本操作源码实现原理以及多线程情况下get()操作的死循环引发原因 一.hashMap简介 1.hashMap集合的主要属性及方法 (默认初始化容量)DEFAULT_INITIAL_CAPACITY = 16 (默认最大容量)MAXIMUM_CAPACITY = 1 << 30 (默认加载因子)DEFAULT_LOAD_FACTOR = 0.75f (Entry数组)Entry[] table (Entry实例的数量)size put(K key, V value)