数组基础及实例应用(冒泡排序、二分法查找数据)
强类型语言的特点:(弱类型语言特点正好相反)
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 }