排序和查找算法

吐舌头

冒泡排序

思路:每轮排序都是将最大的数沉在最后一位。

      每轮参与循环的数字个数均减一,因为后续数字已排序。

var i=0,j=0;

for(i=0;i<a.length;i++)     外循环,控制循环趟数。

{

   for(j=0;j<a.length-i;j++)     内循环,控制每轮循环个数

   {

      var temp=0;

   if a[j]>a[j+1]

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

   }

}

二分法查找

思路:先排序,后查找

var low=0,high=a.length-1;

while(low<=high)

{

var mid=parseInt((high+low)/2);

if   key==a[mid]       key为要查找的数

   {

    return mid;

   }

else if(key>a[mid])

   {

    low=mid+1;

   }

else if(key<a[mid])

{

high=mid-1;

}

}

return -1;           未找到时返回-1

查找法排序

思路:1.找出无序列表中最小数的下标

      2.让最小数和无序列表中第一个数交换(交换一次,无序列表更新一次,更新一次无序列表数少一个,因为前面数已排序)

for(i=0;i<a.length;i++)  外循环,控制循环次数

{

var k=i;         用k来记录最小的下标

for(j=i+1;j<a.length;j++)   内循环,无序列表数的循环

{

if a[k]>a[j]           如果定义的k所对应的元素大于a[j]

k=j;                  K和j交换位置

}

}

if(i!=k)     判断i是否等于k,如果等于就证明i本来即为最小数的

           下标,无需进行交换,不等于时应进行交换

{

var temp;

temp=a[i];

a[i]=a[k];

a[k]=temp;

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值