zoukankan      html  css  js  c++  java
  • JS数组练习

    1.输入10个成绩,求总分,最高分,最低分

    <script type="text/javascript">
    var arr = new Array(80,70,86,58,90,35,89,67,50,99);
        var sum = 0;
        var maxd = 0;
        var mind = 100;
        for(var i=0;i<arr.length;i++){
            sum = sum +arr[i];
            if(arr[i]>maxd){
                maxd = arr[i];
            }
            if(arr[i]<mind){
                mind = arr[i];
            }
        }
        alert(sum);
        alert(maxd);
        alert(mind);
    </script>

    这个题的解题思路就是先设定好一个最大值和最小值,然后让我们的变量arr[i]分别和最大值、最小值作比较,然乎通过转换赋值的形式来得到我们想要得到的最大和最小值

    2.往数组里面添加数据的时候去重

    方法一(比较笨重,但是粗俗易懂):

    <script type="text/javascript">
        var a = prompt("请输入一个数字:");
        var arr = new Array(1,2,3,4,5);
     
        var z = 0;
        for(var i=0;i<arr.length;i++){
            if(a == arr[i]){
                z = 1;
                break;
            }
        }
        
        if(z==0){
            arr.push(a);
        }else{
            alert("该数据在数组里面已存在!");
        }
    </script>

    当输入9的时候没有弹出提示框,说明9已经添加进这个数组中

    方法二.运用   var.indexof()

    <script type="text/javascript">
        var a = parseInt(prompt("请输入一个数字:"));---------------------在这里一定要注意,要把字符串转换成整数
        var arr = new Array(1,2,3,4,5);
        
        alert(arr.indexOf(a));    //判断数据是否在数组里面存在,如果要检索的字符串值没有出现,则该方法返回 -1;另外indexOf() 方法对大小写敏感!Of的O为大写!
    </script>

    在对话框输入一个值(这个值在数组中),那么指示框弹出的的是这个值的索引

    在对话框输入一个值(这个值不在数组中),那么指示框弹出的的是这个值的索引就为-1

    3.冒泡排序(比如从大到小排序)【*要重点学习一下】

    我们拿个表格先来分析一下这个数组:

    <script type="text/javascript">
       var arr = new Array(70,34,60,49,20,59,98,100);
        
        var zj = 0;//中间变量
        
        //第一次for用来控制比较的轮数,i代表轮次
        for(var i=1;i<arr.length;i++){
            //控制每轮比较几次的
            for(var j=0;j<arr.length-i;j++){
                if(arr[j]<arr[j+1]){
                    //实现交换
                    zj = arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=zj;
                }
            }
        }
        alert(arr[0]);
    </script>

    验证一下其他数据是否正确

    <script type="text/javascript">
       var arr = new Array(70,34,60,49,20,59,98,100);
       var zj = 0;
       for(var i=1;i<arr.length;i++){
           for(var j=0;j<arr.length-i;j++){
               if(arr[j]<arr[j+1]){
                  zj = arr[j];
                  arr[j]=arr[j+1];
                  arr[j+1]=zj;
                }
            }
        }
        alert(arr[2]);
    </script>

    4.在数组里面查找数据,找到数据所在位置的索引

    方法一:

    <script type="text/javascript">
        var arr = new Array(1,2,3,4,5,6,7,8,9,10);
        var a = 6;
        alert(arr.indexOf(a));
    </script>

    方法二:

    <script type="text/javascript">
        var arr = new Array(1,2,3,4,5,6,7,8,9,10);
        var a = 6;
        for(var i=0;i<arr.length;i++){
            if(a==arr[i]){
                alert(i);
            }
        }
    </script>

    方法三:二分法查找数据(数据是海量的话,我们得学会用能用二分法),但是要求数组必须是排好序的

    <script type="text/javascript">
            var arr = new Array(1,2,3,4,5,6,7,8,9,10);
        var a = 6;
        
        var minx = 0;
        var maxx = arr.length-1;
    
        while(true){
            var zjx = parseInt((minx+maxx)/2);
            if(zjx==minx){
                if(a==arr[zjx+1]){
                    alert(zjx+1);
                    break;
                }
            }
        
            if(a==arr[zjx]){
                alert(zjx);
                break;
            }else if(a>arr[zjx]){
                minx = zjx;
            }else{
                maxx = zjx;
            }
            
        }
        
    </script>

     二分法原理:折半查找,每次看做把表分成两半,因为已经排序,所以只需要和中间数比较就能确定是在哪一半,然后不断分成两半,直到匹配。可以运用二分法来完成海量数据的检索。比如var arr=new Array (1,2,3,4,5,6,7,8,9);这组数组,最小的索引是0,最大的索引是8。把最大和最小索引取个平均值,索引是4,分成的2组数组就是0-4和5-8。看中间的索引,对应的元素是5,而目标值是6>5,索引0-4的数组就不需要考虑了,值考虑索引为5-8的数组。再取索引为5-8的平均值为6(取整数),数组的索引又分成了5-6和7-8。索引6对应的元素是7,目标值是6<7,所以索引7-8的数组就不需要考虑了。以此类推逐步减小目标值的范围,找出目标值的索引。

  • 相关阅读:
    POJ 3710 Christmas Game#经典图SG博弈
    POJ 2599 A funny game#树形SG(DFS实现)
    POJ 2425 A Chess Game#树形SG
    LeetCode Array Easy 122. Best Time to Buy and Sell Stock II
    LeetCode Array Easy121. Best Time to Buy and Sell Stock
    LeetCode Array Easy 119. Pascal's Triangle II
    LeetCode Array Easy 118. Pascal's Triangle
    LeetCode Array Easy 88. Merge Sorted Array
    ASP.NET MVC 学习笔记之 MVC + EF中的EO DTO ViewModel
    ASP.NET MVC 学习笔记之面向切面编程与过滤器
  • 原文地址:https://www.cnblogs.com/sutao/p/7026727.html
Copyright © 2011-2022 走看看