js 数组的应用


(1)查找

indexOf系统提供的

我们也可以实现自己的查找方式

a.  循序查找

var a = [3,7,11,43,87,5,99,22,51,8];
var num = Number(prompt("请输入要查找的数"));
var index = -1;//最初认为不在数组中
 
for(var in a){
     if(a[i]==num){
         index=i;
         break;
    }
    
 }
 alert(index);

这种查找方法最简单,但是查找次数与数据量成正比,效率不高。

b.  折半查找(二分查找)

假设在一个已近有序的数组中,可以利用折半查找大幅提高效率。

var a = [3,5,7,8,11,22,43,51,87,99];
var num = Number(prompt("请输入要查找的数"));
var index = -1;//最初认为不在数组中

 
var start = 0;
 var end = a.length-1;
 while(start <= end) {
     var mid = Math.ceil((start +end)/2) ;//计算中间
    
if (num == a[mid]) {
         index =mid;
         break;
     }else{
         if(num > a[mid]){
             //在后半段找
            
start
=mid+1;
         }else{
             //在前半段找
            
end
=mid-1;
         }
     }
 }
 alert(index);

折半查找的最坏查找次数与数据的关系是对数关系,所以说它的查找效率很高,但是任何事情往往都有两面性,它的高效率也有高代价的,也就是要有顺序的。

排序:

(1)  冒泡排序

var a = [3,7,11,43,87,5,99,22,51,8];

for (var i=0; i<a.length-1; i++) {
    for (var j=0; j<a.length-i-1; j++) {
        if (a[j] > a[j + 1]) {
            var t = a[j];
            a[j] = a[j + 1];
            a[j + 1] = t;
        }
    }
}

   alert(a.toString());

 

(2)选择排序

扫描找到最小的,让最小的和最前面的数对调。一直这样循环下去到结束

 

(3)队列

先进先出(FIFO),在头部出队(shift),在尾部入队(push)。

(4)堆栈

先进后出(FILO),在头部出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值