冒泡排序与二分法

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;}

  }

原文地址:https://www.cnblogs.com/gaojunshan/p/5885782.html