数组的应用
来源:互联网 发布: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>");
- 数组-数组的应用
- Array数组的应用
- 控件数组的应用
- 数组的下标应用
- 字符串数组的应用
- 数组的简单应用
- PHP数组的应用
- 二维数组的应用
- 数组的应用
- 结构数组的应用
- java数组的应用
- Perl数组的应用
- Perl数组的应用
- 动态数组的应用
- 动态数组的应用
- shell 数组的应用
- 后缀数组的应用
- 指针数组的应用
- makedown 使用方法
- RecyclerView的item高度占了整个屏幕高度的问题
- Ajax跨域问题解决
- 第四篇:JAVA之面向对象(上)
- Java基础-构造器
- 数组的应用
- C++设计模式 -> 创建型 -> 建造者(Builder)
- Java注解学习四:@Inherited的使用
- [Zabbix] Memcached 监控
- bzoj3230 相似子串(SA+lcp+二分)
- 选取截面一圈点然后沿法线生成对应形状的巷道
- 输入学生姓名,形成数组,输入范围查找学生
- 关于SVN .a文件上传的问题
- Java内存区域与内存溢出异常