数组的应用

来源:互联网 发布:windows 批处理 编辑:程序博客网 时间:2024/06/13 18:10

数组的应用

1)查找

indexOf系统提供的

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

a.顺序查找

var a = [3,7,11,43,87,5,99,22,51,8];
/*实现indexOf的功能*/
var num= Number(prompt("请输入要查找的值:"));
var index= -1;//最初认为不在这个数组中,所以设为-1
for(vari ina){
    /*试图找到它*/
    
if(a[i] ==num){ //如果找到了这个数
        index
= i; //index等于这个找到的数的下标
        
break;//找到了不用再找了就跳出这个循环
    
}
}
alert(index);

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


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

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

var a = [3,5,7,8,11,22,43,51,87,99];
/*实现indexOf的功能*/
var num= Number(prompt("请输入要查找的值:"));
var index= -1;//最初认为不在这个数组中,所以设为-1
var start= 0;
var end= a.length- 1;
while(start<= end){ //start<=end时循环操作以下步骤
    
varmid = 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,5,7,8,11,22,43,51,87,99];
for (vari = 0;i < a.length- 1;i++) {
    for (varj = 0; j <= a.length- i - 1; j++) {
        //不满足升序就对调
        
if(a[j] >a[j+ 1]) {
            var t= a[j];//第一个放到第三个t,第一个空了
            a
[j] =a[j+ 1];//第二个放到空了的第一个,第二个空了
            a
[j+ 1] = t;//第三个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>");


原创粉丝点击