zoukankan      html  css  js  c++  java
  • 数组的相关练习(对数组的api的使用)

    1.通过循环按行顺序为一个5*5的二维数组a,赋到1到25的自然数试编程

    //方法一:
    var arr = [];
    var num = 1;
    for(var i = 0 ; i < 5 ; i++){
       //在数组arr里面添加成二维数组
       arr.push([]);
       //在二维数组里面添加数据1-25;
       for(k = 0 ; k < 5 ; k++){
           arr[i].push(num);
           num++;
      }
    }
    console.log(arr);

    //方法二:
    var a = new Array();  
    var count = 0;
    for(var i = 0 ; i < 5 ; i++){
       a[i] = new Array();
       for(k = 0 ; k < 5 ; k++){
           count++;
           a[i].push(count);
      }
    }
    console.log(a);

    2.定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中。试编程。

    //方法一:
    var evenArr = [];
    var arr = [];
    var meanValue = [];
    for(var i = 2 ; i <= 60 ; i += 2){
       evenArr.push(i);
    }
    //每5个放在一个数组里面
    for(var i = 0 ; i < 6 ; i++){
       //截取5个放在arr里面
       arr.push(evenArr.splice(0,5));    //截取的结果放在新的数组中(易错点:slice是按照下标进行截取)
    }
    //arr二维数组,里面的每一项都为一个数组,把小数组里面的数值相加除5。然后push到meanValue这个平均值的数组中(meanValue.push()
    for(var i = 0 ; i < arr.length ; i++){
       var sum = 0;
       for(var k = 0 ; k < arr[i].length ; k++){
           sum += arr[i][k];
      }
       //每次sum和 计算完毕之后,把平均值push到meanVulue(每一个小组求一次和及平均,所以需要让sum每一次清0)
       meanValue.push(sum / 5);
    }
    console.log(meanValue);

    //方法二:
    var arr = [];
    var arr1 = [];
    var sum = 0;
    for(var i = 0 ; i < 30 ; i++){
       arr.push(2 * i + 2);   //下标和值之间的关系
       sum += arr[i];
       if(arr.length % 5 == 0){
           arr1.push(sum / 5);
           sum = 0;
      }
    }
    console.log(arr,sum,arr1);

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

    //方法一:
    var arr = [];
    var num = 1;
    var sum = 0;
    for(var i = 0 ; i < 5 ; i++){
       //在数组arr里面添加成二维数组
       arr.push([]);
       //在二维数组里面添加数据1-25;
       for(k = 0 ; k < 5 ; k++){
           arr[i].push(num);
           num++;
      }
    }
    //计算左下半三角的和(首先要取出数据)
    for(var i = 0 ; i < arr.length ; i++){
       //取出二维数组的值
       for(var k = 0 ; k <= i ; k++){
           sum += arr[i][k];
      }
    }
    console.log(sum);

    //方法二:
    var a = new Array();  
    var count = 0;
    var sum = 0;
    for(var i = 0 ; i < 5 ; i++){
       a[i] = new Array();
       for(var k = 0 ; k < 5 ; k++){
           count++;
           a[i].push(count);
      }
       for(var j = 0 ; j <= i ; j++){
           sum += a[i][j];
      }
    }
    console.log(a,sum);

    4.编写函数norepeat(arr) 将数组的重复元素去掉

    //splice(start,deleteCount,arr)  从start开始,删除几个,arr新插入的数组元素。 改变原数组
    var arr = [0,1,2,3,3,3,5,6,3,7,8,7,77,7,7,3,4,3];
    function norepeat(arr){
       //运用选择排序的思想
       for(var i = 0 ; i < arr.length - 1; i++){
           //用第一个和其余的比较
           for(var j = i + 1 ; j < arr.length ; j++){
               //如果两个相等,删除
               if(arr[i] == arr[j]){
                   arr.splice(j,1);
                   j--;   //跳过了j这个索引,所以j--
              }
          }
      }
       return arr;
    }
    console.log(norepeat(arr));

    5.封装功能“有一个从小到大排好序的数组。现输入一个数,要求按原来的规律将它插入数组中”

    //方法一:
    //假设已经排好顺序,然后添加数字
    var arr = [1,2,3,5,7,9];
    function insert(arr,num){
       //制作一个口令
       var flag = true;
       //利用循环,每个数组都和num比较,如果小于arr[i] arr.splice(i,0,num);
       for(i = 0 ; i < arr.length ; i++){
           if(num <= arr[i]){
               arr.splice(num);
               flag = false;
               break;
          }
      }
       if(flag){
           arr.push(num);
      }
       return arr;
    }
    console.log(insert(arr,20));

    //方法二:
    var arr = [2, 3, 4, 6, 2, 0, 4, 3];
    //冒泡排序
    function bubbleSort(arr, num) {
       //确定循环的轮数
       for (var i = 0; i < arr.length - 1; i++) {
           //每一轮 数值的比较(两两比较的,每一轮最后一个都不用比较,所以-i;得到的最后一个和空的undefined比较了,所以-1,不用比较,提高算法的效率)
           for (var k = 0; k < arr.length - i - 1; k++) {
               //谁大谁往后排
               if (arr[k] > arr[k + 1]) {
                   var temp = arr[k];
                   arr[k] = arr[k + 1];
                   arr[k + 1] = temp;
              }
          }
      }

       //插入数据
       for (var j = 0; j < arr.length; j++) {
           if (num <= arr[j]) {
               arr.splice(j, 0, num);
               return arr;
          } else if (num > arr[arr.length - 1]) {   //当这个数字大于排序后的最后一个数字时(即最大数),将该数加在数组的后面
               arr.push(num);
               return arr;
          }
      }
       // if(num >= arr[arr.length-1]){
       //     arr.push(num);
       //     return arr;
       // }
    }
    console.log(bubbleSort(arr, 4));

     

  • 相关阅读:
    对this的浅解
    Java设计模式---工厂模式学习笔记
    MyBatis入门
    Java设计模式---单例模式学习笔记
    java设计模式--七大原则
    Servlet request常用方法
    maven中导入jdbc的坑
    Servlet生命周期
    JQuery选择器
    Test
  • 原文地址:https://www.cnblogs.com/ljp1997/p/11448609.html
Copyright © 2011-2022 走看看