数组基础及实例应用(冒泡排序、二分法查找数据)

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

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 }

posted on 2017-06-16 16:21  为伊消得  阅读(185)  评论(0编辑  收藏  举报