数组的应用

来源:互联网 发布:高德导航软件 编辑:程序博客网 时间:2024/06/18 15:07

数组的应用

(1)查找

其实在数组的属性与方法中,我们学习了一个indexOf方法就是查找,它是系统提供的方法,我们其实也可以实现自己的查找方法。

a、顺序查找

<script>    var a = [3,1,34,45,35,67,84,36,24];    var num = Number(prompt("请输入要查找的值:"));    var index = -1;//最初认为要找的数不在数组中    for(var i in a){        if(a[i] == num){            index = i;            break;        }    }    alert(index);</script>
这种查找方式最简单,但是查找次数与数据量成正比,效率不高。

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

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

/*折半查找* 思路:* (1)用start表示查找范围的起点,end表示终点* (2)只要start<=end就重复以下步骤* (3)和中间位置(mid)的那个数进行比较*   a、相等:找到了,结束*   b、大于:在前半段找,即end=mid-1*   c、小于:在后半段找,级start=mid+1*   (4)输出查找结果* */var a = [1,3,24,34,35,36,45,67,84,];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);
折半查找的最坏查找次数与数据量的关系是对数关系,所以说它的查找效率很高,但是任何事物往往都有两面性,它是高效率也是有高代价的,也就是要求数组必须有序。

(2)排序(冒泡排序)

var a = [3,1,34,45,35,67,84,36,24,46];    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());
(3)队列

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

var a = [];a.push(1);document.write(a.toString() + "<br>");a.push(2);document.write(a.toString() + "<br>");a.push(3);document.write(a.toString() + "<br>");a.shift();document.write(a.toString() + "<br>");a.shift();document.write(a.toString() + "<br>");a.shift();document.write(a.toString() + "<br>");
(4)堆栈

先进后出(FILO),在尾部进栈(push),在尾部出栈(pop)

var a = [];a.push(1);document.write(a.toString() + "<br>");a.push(2);document.write(a.toString() + "<br>");a.push(3);document.write(a.toString() + "<br>");a.pop();document.write(a.toString() + "<br>");a.pop();document.write(a.toString() + "<br>");a.pop();document.write(a.toString() + "<br>");

今天这篇是为了补充上次写的JS的数组内容,都是使用案例来说明这些知识。

原创粉丝点击