zoukankan      html  css  js  c++  java
  • 数组基础及实例应用(冒泡排序、二分法查找数据)

    强类型语言的特点:(弱类型语言特点正好相反)

    1.存储的数据必须是连续的;

    2.需要规定长度,即规定最多存多少数据;

    3.规定数据类型;

    数组的定义方式

    1 var arr=new Array();
    2 arr[0]=1;
    3 arr[1]=2;
    4 arr[2]="hello";
    5 alert(arr[1]);
    var arr=new Array(1,2,3,4,5);
    alert(arr[2]);
    1 var arr=new Array();
    2 arr.push(1);
    3 arr.push(2);
    4 alert(arr[1]);
    1 var arr=[1,2,3,4,5];
    2 alert(arr[4]);

    用for循环遍历数组

    1 var arr=new Array(10,20,33,7,19);
    2 for(var i=0;i<arr.length;i++){
    3     alert(arr[i]);
    4 }

    知识点:

    数组里的值也叫value,索引叫key,这两个是成对存在的,叫做键值对。

    实例应用:

    1.对一个数组求和,并找最大值最小值。

     1 var sum=0;
     2 var max=0;
     3 var min=100;
     4 var arr=new Array(99,60,53,72,88,87,95,90,76,63);
     5 for(var i=0;i<arr.length;i++){
     6     sum=sum+arr[i];
     7     if(arr[i]>max){
     8         max=arr[i];
     9     }
    10     if(arr[i]<min){
    11         min=arr[i];
    12     }        
    13 }
    14 alert(sum);
    15 alert(max);
    16 alert(min);

    2.添加数据时去除重复数据

     1 var a=prompt("请输入一个数:");
     2 var arr=new Array(1,2,3,4,5);
     3 var z=0;
     4 for(var i=0;i<arr.length;i++){
     5     if(a==arr[i]){
     6         z=1;
     7         break;
     8     }
     9 }
    10 if(z==0){
    11     arr.push(a);
    12 }else{
    13     alert("该数字已存在");
    14 }

    也可以用indexOf来写

    1 var a = parseTnt(prompt("请输入一个数:"));
    2 var arr = new Array(1,2,3,4,5);
    3 alert(arr.indexOf(a));

    3.冒泡排序

     1 var arr=new Array(45,56,23,78,89,99,36,77,100);
     2 var zj=0;                                             //中间变量
     3 for(i=1;i<arr.length;i++){                   //用来控制轮次
     4     for(j=0;j<arr.length-i;j++){        //用来控制次数
     5         if(arr[j]<arr[j+1]){
     6             zj=arr[j];
     7             arr[j]=arr[j+1];
     8             arr[j+1]=zj;
     9         }
    10     }
    11 }
    12 alert(arr[0]);

    4.在数组中查找数据的索引

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

    用二分法查找数据

     1 var arr=new Array(1,2,3,4,5,6,7,8,9,10);
     2 var a=5;
     3 var min=0;
     4 var max=arr.length-1;
     5 while(true){
     6     var zj=parseInt((min+max)/2);
     7     if(zj==min){
     8         if(a==arr[zj+1]){
     9         alert(zj+1);
    10         break;
    11         }
    12     }
    13     if(a==arr[zj]){
    14         alert(zj);
    15         break;
    16     }else if(a>arr[zj]){
    17         min=zj;
    18     }else{
    19         max=zj;
    20     }
    21 }

  • 相关阅读:
    ASP.NET Forums 2.0 修改集锦(一)
    在自己的应用程序中显示Windows关于对话框
    ASP.NET Forums 2.0 本地化修改(四)
    Flash对双字节的支持问题
    DotNetNuke 2.1.2安装指南
    ASP.NET Forums 2.0 本地化修改(五) 增加页面Meta标记的keywords和description
    ASP.NET Forums 2.0 本地化修改(三)
    JavaScript利用正则表达式自己写数字判断函数
    hash表基础知识(转载)
    求子数组的最大和
  • 原文地址:https://www.cnblogs.com/zym0m/p/7018827.html
Copyright © 2011-2022 走看看