为什么需要数组:
使用传统的方法来解决多数据问题很麻烦。 数组可以存储一组数据。js数组可以存放各种类型的数据。
js函数调用中,数组的传递方式是按地址传递。
js的数组可以动态增加长度。 比如
var a = [2,3];
a[2] =56;
alert(a[2]);
数组名.length 可以得到数组的长度。
字符串可以用split()函数来分割字符串。默认是通过空格来分割。
字符串的下标也可以是字符串。
arr =[45,90,0];
arr['gg'] = 9000; //动态增加。
for(var key in arr)
{
window.alert(key +"= " + arr[key])
}
二位数组:
二位数组的遍历:
var arr =[["shoping",123,4.5],["a","b","c"],[23,5]]
for(var i=0;i<arr.length;i++)
{
for(var j=0;j<arr[i].length;j++)
document.writeln(arr[i][j]+" ");
document.writeln("<br/>")
}
排序:
冒泡排序法:
//冒泡排序算法
var arr = [5,0,-56,54,234,54,-53,53,-4,53]
var flag =false;
for(var i=0;i<arr.length-1;i++)
{
for(var j=0;j<arr.length-1-i;j++)
if(arr[j]>arr[j+1])
{
var temp =arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
flag =true;
}
if(flag)
{
flag=false;
}
else
{
break;
}
}
for(var i=0;i<arr.length;i++)
{
document.writeln(arr[i]+" ");
}
结果:
-56 -53 -4 0 5 53 53 54 54 234
查找:
二分查找:
二分查找的一个前提是被查找的数组是有序的(从小到大或者从大到小)。如果数组不是有序的,则不能用二分查找。
//二分查找
//找到数组的中间数,和你要查找的数比较,如果midval>findVal,则findVal在数组的左边,则只在左边查找,反之右边。
var arr = [-13,-5,-2,0,4,6,87,98,123,124,654]
function binarysearch(arr,findVal,leftIndex,rightIndex)
{
//找到中间那个值 地板除
var midIndex = Math.floor((leftIndex + rightIndex)/2);
var midVal = arr[midIndex];
//防止无穷递归。
if(leftIndex>rightIndex)
{
document.writeln("找不到"+"<br/>");
return;
}
if(midVal >findVal)
{
binarysearch(arr,findVal,leftIndex,midIndex-1);
}
else
{
if(midVal < findVal)
{
binarysearch(arr,findVal,midIndex+1,rightIndex);
}else
{
document.writeln("找到了,下标"+midIndex+"<br/>");
return;
}
}
}
binarysearch(arr,2,0,arr.length-1);
binarysearch(arr,0,0,arr.length-1);
binarysearch(arr,87,0,arr.length-1);
//测试。
结果:
找不到
找到了,下标3
找到了,下标6