首页 > 代码库 > Java数据结构与算法之数组
Java数据结构与算法之数组
数组特点:
1、大小固定
2、同一数据类型
3、下标访问
4、数据项可重复
Java数据类型:基本类型(int和double)和对象类型。在许多编程语言中,数组也是基本类型。但在Java中把它们当作对象来对待,因此在创建数组时必须使用new操作符。
有序数组与无序数组比较:最主要的好处是查找速度比无序数组快多了。不好的方面是在插入操作中由于所有靠后的数据都需要移动以疼开空间,所以速度较慢。有序数组和无序数组数据中的删除操作都很慢,这是因为数据项必须向前移动来填补已删除数据项的空洞。
数据访问:从下标访问,可以理解为位置访问,这一点主要说明与链表的关系访问的不同。
数组中有无重复值对数组操作的影响:
二分查找和线性查找:
线性查找。
在一列给定的值中进行搜索,从一端开始逐一检查每个元素,直到找到所需元素的过程。
如果查找池是某种类型的表,比如一个数组,简单的查找方法是从表头开始,一次将每一个值与目标元素相比较,最后,或者查找到目标,或者达到表尾,而目标不存在于组中,这个方法成为线性查找。
线性查找又称为顺序查找。
public class LSearch { public static int[] Data = http://www.mamicode.com/{ 12, 76, 29, 22, 15, 62, 29, 58, 35, 67, 58,>二分查找(折半查找)。
几个特点:
1、必须采用顺序存储结构
2、必须按关键字大小有序排列
3、数据量越大,效率体现的越明显
/** * 二分查找法 demo */ public int find(){ a [0] = 22; a [1] = 33; a [2] = 88; a [3] = 43; a [4] = 74; a [5] = 34; a [6] =63; a [7] = 32; a [8] = 26; a [9] = 92; int lowerBound = 0; int upperBound = 9; int curIn = 0; long searchKey = 63; while (true) { curIn = (lowerBound+upperBound)/2; if (a[curIn]==searchKey) { return curIn; } else if (lowerBound>upperBound) { return 10; }else { if (a[curIn]<searchKey) { lowerBound = curIn+1; }else { upperBound = curIn-1; } } } }大O表示法汽车按尺寸被分为若干类,微型、中型、大型等等。同样,我们也需要一个快捷的方法来评价计算机算法的效率,在计算机科学中,这种粗略的度量方法被称作“大O”表示法。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。