js冒泡排序与二分法查找

时间:2023-03-10 00:29:53
js冒泡排序与二分法查找

冒泡排序

var attr=[1,5,7,6,3,9,2,8,4];

var zj=0;
//控制比较轮数
for(var i=0;i<attr.length-1;i++)
{
//控制每轮的比较次数
for(var l=0;l<attr.length-1-i;l++)
  {
// 与下一个比较
    if(attr[l]<attr[l+1])
    {
//互换
       zj=attr[l];
       attr[l]=attr[l+1];
       attr[l+1]=zj;
    }
  }
}
alert(attr[0])

二分法查找

//必须先排好序

var attr=[1,2,3,4,5,6,7,8,9];

//要找的值

var v=6;

//取最大索引与最小索引的平均值与查询值比较,排除掉索引大的或索引小的,然后在剩下的索引里面再次判断,直到找到一致的。

var min=0;
var max=attr.length-1;
var zj;
while(true)
{
//计算中间索引
zj=parseInt((min+max)/2);
//比较中间值与传入值
if(attr[zj]==v)
{
break;
}
if(zj==min)
{
if(attr[zj+1]==v)
{
zj=zj+1;
break;
}
else
{
zj-1;
break;
}
}
if(attr[zj]>v)
{
max=zj;
}
{
min=zj;
}
}
alert(zj);