一.在强类型语言里:①数组里面只能存放相同数据类型的数据。②定义数组的时候需要指定一个长度(可以存放的元素数量)③内存空间连续。
集合的特点:①可以存放任意类型的数据。②定义的时候不需要指定长度。③内存空间不连续。
二.在js里面的数组:①可以存放任意类型的数据。②定义的时候不需要指定长度。
js里面没有集合。它的定义方式有三种:①Var attr=Array(1,5.2,"aa");②Array(5)//定义一个长度为5的数组。③Var attr=[1,1.34,"aa"]
三.数组的遍历:
① for(Var i=0; i<attr.length;i++)
{
alert(attr[i]);
}
②for(Var a in attr//a是从数组attr里取到的牵引。
{
alert(arrt[a]);
}
四.添加去重
Var sj=10; var cf=true; Var attr=[2,5,10,16,27]
for(Var i=0;i<attr.length;i++)
{
if(sj==attr[i]){
cf=false;
break;
}
}if(cf){
attr.push(sj);
}else{
alert("有重复值");
}
五.冒泡排序
①两个相邻的元素进行比较,满足条件元素互换。
②进行比较的轮数是数组的长度减去一.(attr.length-1)
//定义 一个交换使用的中间变量
Var zj=0;
for(Var i=0;i<attr.length-1;i++)//这是控制比较的轮数
{
for(Var j=0;j<attr.length-1-i;i++)//这是控制每轮比较的次数
{
if(attr[j]<attr[j+1]){ //进行互换
zj=attr[j];
attr[j]=attr[j+1];
attr[j+1]=zj;
}
}
}
六.在数组里面查找数据
Var sy=_1;
for(Var i=0;i<attr.length;i++){
if(attr[i]==v){//v是用户输入的数据
sy=i;
}
}if(sy==-1){
alert("没有找到数据");
}else{
alert("改数据在数组里面的牵引为:"+sy);
}
七.//二分法查找数据
//最小索引
var minsy = 0;
var maxsy = attr.length-1;
var midsy ;
//循环比较
while(true)
{
//计算中间索引
midsy = parseInt((minsy+maxsy)/2);
//比较中间值和用户的值
//判断中间索引的值是否等于用户要查找的值
if(attr[midsy] == v)
{
//如果等于,就退出循环,找到了数据
break;
}
//判断是否只剩下两个数据
if(midsy == minsy)
{
//判断两个数据中的另外一个是否等于用户查找的值
if(attr[midsy+1]==v)
{
//找到了值,退出循环
midsy = midsy+1;
break;
}
else
{
//没有找到值,退出循环
midsy = -1;
break;
}
}
//用来改范围
if(attr[midsy]>v)
{
maxsy = midsy;
}
else
{
minsy = midsy;
}
}
alert(midsy);
</script>