您的位置:首页 > 编程语言 > Java开发

java中数组基础

2008-05-06 00:11 302 查看
数组是应用最广泛的数据存储结构。它被植入到大部分编程语言中。由于数组十分易懂,所以它被用来作为介绍数据结构的起步点,并展示面向对象编程和数据结构之间的相互关系。这里将会介绍Java中的数组并展示自制的数组类。还将分析一种特殊的致组:有序数组.其中的数据是按关键字升序(或降序)排列的。这中排列是快速查找数据项成为可能:即二分查找法
对于大多数数据结构来说主要是分析删除,插入,查找,这三种算法;数组也不例外;
(首先声明数据项没有相同的)
先说无序数组:
插入
其插入算法比较快;新数据项总插在数组的第一个空位置上,代码也比较简单
if(index<a.lenght())
a[index]=na;index为数组的实际存储的数据项长度;
查找
必须平均搜索一半的数据项来查找特定数据值。找数组头部的数据项快,找数组尾部的数据项慢。设数据项个数为N,则一个数据项的平均查找长度为N/2。在最坏的情况下,待查的数据项在数组的最后,这需要N步才能找到。
删除
需要先找到数据项,将数据项删除,在将后面的依次向前填充,不能出项空洞,即相邻数据项之间存在空内容
有序数组
这里需用到二分查找,其使用的方法与我们在孩童时期常玩的猜数游戏中所用的方法一样。在这个游戏里,朋友会让你猜她正想的一个1至100之间的数。当你猜了一个数后,她会告诉你三种选择中的一个:你猜的比她想的大,或小,或猜中了。
pubic int find(long infind){
int lowerBound=0;
int upperBound=nElems-1;
int curIn;
while(true){
curIn=(loerBound+upperBound)/2;
if(a[curIn]==infind)
reurn curIn;
else if(lowerBound>upperBound)
return nElems
else{
if(a[curIn]<infind)
lowerbound=curIn+1;
else
upperBound=curIn-1;
}
}
}
对与有序数组的插入与删除算法比较慢,但对于某些需要查找更多的程序来说速度提高是很明显的
不需要的东西不用写了 只需记住这些即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: