首页 > 代码库 > 冒泡排序与二分法
冒泡排序与二分法
var attr=[1,8,6,4,5,3,7,2,9] //对数组进行排序,冒泡排序 //两个相邻的元素进行比较,满足条件互换//进行比较的轮数是数组的长度-1//控制比较的轮数
for(var i=0;i<attr.length-1;i++)
{//控制每轮比较的次数
for(var j=0;j<attr.length-1-i;j++)
{//如果下一元素>当前元素
if (attr[j]<attr[j+1])
{//互换
zj=attr[j];
attr[j]=attr[j+1];
attr[j+1]=zj;
}
}
}
在数组里面查找数据
var attr=[1,2,3,4,5,6,7,8,9]
//要查找的值
var v=6;
//循环遍历的方式
var sy=-1;
for (var i=0;i<attr.length;i++)
{ if(attr[i]==v)
{ sy=v; }
if(sy=-1)
{alert("没找到数据")}
else
{alert("该数据在数组里找到:"+sy)}
}
//二分法查找数据
//最小索引
var minsy=0;
var maxsy=attr.length-1;
var midsy;
//循环比较
while(true)
{//计算中间索引
midsy=pareinyt((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;}
}
冒泡排序与二分法