现在的位置: 首页 > 综合 > 正文

韩顺平网页第二十七讲二十八讲

2014年07月26日 ⁄ 综合 ⁄ 共 1505字 ⁄ 字号 评论关闭

为什么需要数组:

使用传统的方法来解决多数据问题很麻烦。 数组可以存储一组数据。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

抱歉!评论已关闭.