Java数据结构和算法的数组
阵列的功能:
1、固定大小
2、相同的数据类型
3、
4、数据项可反复
Java数据类型:基本类型(int和double)和对象类型。在很多编程语言中。数组也是基本类型。但在Java中把它们当作对象来对待。因此在创建数组时必须使用new操作符。
有序数组与无序数组比較:最基本的优点是查找速度比无序数组快多了。不好的方面是在插入操作中由于全部靠后的数据都须要移动以疼开空间。所以速度较慢。
有序数组和无序数组数据中的删除操作都非常慢,这是由于数据项必须向前移动来填补已删除数据项的空洞。
数据訪问:从下标訪问,能够理解为位置訪问,这一点主要说明与链表的关系訪问的不同。
数组中有无反复值对数组操作的影响:
二分查找和线性查找:
线性查找。
在一列给定的值中进行搜索,从一端開始逐一检查每一个元素,直到找到所需元素的过程。
假设查找池是某种类型的表,比方一个数组,简单的查找方法是从表头開始,一次将每个值与目标元素相比較,最后,或者查找到目标。或者达到表尾。而目标不存在于组中,这种方法成为线性查找。
线性查找又称为顺序查找。
public class LSearch {
	public static int[] Data = { 12, 76, 29, 22, 15, 62, 29, 58, 35, 67, 58,
			33, 28, 89, 90, 28, 64, 48, 20, 77 }; // 输入数据数组
	public static int Counter = 1; // 查找次数计数变量
	public static void main(String args[]) {
		int KeyValue = 22;
		// 调用线性查找
		if (Linear_Search((int) KeyValue)) {
			// 输出查找次数
			System.out.println("");
			System.out.println("Search Time = " + (int) Counter);
		} else {
			// 输出没有找到数据
			System.out.println("");
			System.out.println("No Found!!");
		}
	}
	public static boolean Linear_Search(int Key) {
		int i; // 数据索引计数变量
		for (i = 0; i < 20; i++) {
			// 输出数据
			System.out.print("[" + (int) Data[i] + "]");
			// 查找到数据时
			if ((int) Key == (int) Data[i])
				return true; // 传回true
			Counter++; // 计数器递增
		}
		return false; // 传回false
	}
}
二分查找(折半查找)。
几个特点:
1、必须採用顺序存储结构
2、必须按keyword大小有序排列
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”表示法。
版权声明:本文博客原创文章。博客,未经同意,不得转载。
Java数据结构和算法的数组的更多相关文章
- Java数据结构和算法之数组与简单排序
		
一.数组于简单排序 数组 数组(array)是相同类型变量的集合,可以使用共同的名字引用它.数组可被定义为任何类型,可以是一维或多维.数组中的一个特别要素是通过下标来访问它.数组提供了一种将有联系的信 ...
 - Java数据结构和算法总结-数组、二分查找
		
前言:在平时开发中数组几乎是最基本也是最常用的数据类型,相比链表.二叉树等又简单很多,所以在学习数据和算法时用数组来作为一个起点再合适不过了.本篇博文的所有代码已上传 github ,对应工程的 ar ...
 - Java数据结构和算法 - 数组
		
Q: 数组的创建? A: Java中有两种数据类型,基本类型和对象类型,在许多编程语言中(甚至面向对象语言C++),数组也是基本类型.但在Java中把数组当做对象来看.因此在创建数组时,必须使用new ...
 - 【Java数据结构学习笔记之二】Java数据结构与算法之栈(Stack)实现
		
本篇是java数据结构与算法的第2篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型 栈是 ...
 - Java数据结构和算法(六)——前缀、中缀、后缀表达式
		
前面我们介绍了三种数据结构,第一种数组主要用作数据存储,但是后面的两种栈和队列我们说主要作为程序功能实现的辅助工具,其中在介绍栈时我们知道栈可以用来做单词逆序,匹配关键字符等等,那它还有别的什么功能吗 ...
 - Java数据结构和算法(十四)——堆
		
在Java数据结构和算法(五)——队列中我们介绍了优先级队列,优先级队列是一种抽象数据类型(ADT),它提供了删除最大(或最小)关键字值的数据项的方法,插入数据项的方法,优先级队列可以用有序数组来实现 ...
 - Java数据结构和算法(九)——高级排序
		
春晚好看吗?不存在的!!! 在Java数据结构和算法(三)——冒泡.选择.插入排序算法中我们介绍了三种简单的排序算法,它们的时间复杂度大O表示法都是O(N2),如果数据量少,我们还能忍受,但是数据量大 ...
 - java数据结构与算法之栈(Stack)设计与实现
		
本篇是java数据结构与算法的第4篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型 栈是一种用于 ...
 - Java数据结构和算法 - 堆
		
堆的介绍 Q: 什么是堆? A: 这里的“堆”是指一种特殊的二叉树,不要和Java.C/C++等编程语言里的“堆”混淆,后者指的是程序员用new能得到的计算机内存的可用部分 A: 堆是有如下特点的二叉 ...
 
随机推荐
- Cygwin 与 MinGW/MSYS/MSYS2,如何选择?甚至还有GNU utilities for Win32
			
Cygwin与MinGW/MSYS,如何选择? 2012-11-03更新:加入 MSYS 的内容. 2013-10-15更新:修改表格格式,加入介绍链接. 2014-12-17更新:加入 MSYS2 ...
 - php实现求最小的k个数(日常出错很容易是分号或者$符号忘记写了)
			
php实现求最小的k个数(日常出错很容易是分号或者$符号忘记写了) 一.总结 日常出错很容易是分号或者$符号忘记写了 二.php实现求最小的k个数 题目描述 输入n个整数,找出其中最小的K个数.例如输 ...
 - ORACLE会话数、连接数配置
			
ORACLE会话数.连接数配置 ORACLE会话数.连接数配置 ORACLE的会话数和连接数参数配置 以sysdba身份登录 sqlplus sys/xxxx as sysdba; 查看最大连接数: ...
 - Windows环境搭建Web自己主动化測试框架Watir(基于Ruby)
			
web自己主动化測试一直是一个比較迫切的问题 图1-1 须要安装的工具 http://railsinstaller.org/ 由于安装Ruby还须要用到其它的一些开发工具集.所以建议从站点http:/ ...
 - warning C4996: 'fopen': This function or variable may be unsafe.(_CRT_SECURE_NO_WARNINGS)
			
在 windows 平台下的 visual studio IDE,使用 fopen 等 CRT 函数(C runtime library(part of the C standard library) ...
 - Android Error:(1,N1) 错误: 需要class, interface或enum
			
造成这个error的原因是Java文件编码格式不对, 比如可能是你之前这个文件是用GBK写的,后来复制到utf-8环境里编译,而文件里有些是隐藏的字符,很难找出来的. 解决方法是在Notepad++新 ...
 - ArcSDE中Compress与Compact的区别
			
原文 ArcSDE中Compress与Compact的区别 附件一”为两种数据库需要的管理工作. 与所表示的含义与操作是不同的. 对于来说,Compressing与Smart Dat ...
 - c#  安全队列
			
using System;using System.Collections.Concurrent;using System.Collections.Generic;using System.Linq; ...
 - JS表格分页组件:fupage的设计思路和具体用法(未来考虑开源,争取在2015年)
			
一.背景 之前在秒针工作的时候,某js高级工程师写了很多自己的组件,其中一套是分页组件,叫做st-grid.不过在我看来,bug太多,我经常给他反馈bug,我也不清楚为啥别人没有发现. ...
 - [WebGL入门]十三,minMatrix.js和坐标变换矩阵
			
注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中假设有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,假设翻译有误,欢迎大家指 ...