您的位置:首页 > Web前端 > JavaScript

js 数组的应用

2017-08-03 19:32 176 查看
(1)查找

indexOf系统提供的

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

a.  循序查找

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

 for(var i 
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)/<
4000
span style="color:#0000FF;">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),在头部出
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: