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: 堆是有如下特点的二叉 ...
随机推荐
- 【Lucene4.8教程之五】Luke 2014-06-24 15:12 1092人阅读 评论(0) 收藏
一.Luke基本内容 1.Luke简介 Luke可用于查看Lucene创建的索引,并对其进行基本操作. 2.创建Luke (1)从Github上下载源文件 https://github.com/tar ...
- Objective-C中 ==、isEqual、isEqualToString判断字符串相等
图片发自简书App 在判断一个字符串类型的变量是否与某字符时相等,你可能写下这样一行代码 if (activityType == @"0"){} //activityType是某一 ...
- CSDN编程挑战——《交替字符串》
交替字符串 题目详情: 假设字符串str3可以由str1和str2中的字符按顺序交替形成,那么称str3为str1和str2的交替字符串.比如str1="abc",str2=&qu ...
- javaScript实现简单网页倒计时代码
<div id="button"> <input type="button" value="同意" id="b0 ...
- experiment : 在私有堆和默认进程堆中, 测试能分配的堆空间总和, 每次能分配的最大堆空间
实验环境: Win7X64Sp1 + vs2008, 物理内存16GB. 实验结论: * 进程堆的最大Size并没有使用完剩余的物理内存 * 每次能分配的最大堆空间接近2M, 不管是私有堆 ...
- 生成式模型(generative) vs 判别式模型(discriminative)
Andrew Ng, On Discriminative vs. Generative classifiers: A comparison of logistic regression and nai ...
- C#3 分部方法,简单标记一下
如果我问你,如果一个普通的类实现了一个接口方法,但是这个类的实例却访问不到这个接口的方法,这种情况你遇到过吗?有时候,你可能在使用分部方法时就会发现这么一个现象. C#3 中出现了 “分部方法” ,工 ...
- Spring处理跨域请求
[nio-8080-exec-8] o.s.web.cors.DefaultCorsProcessor : Skip CORS processing: request is from s ...
- android:layout_gravity和android:gravity属性的差别
gravity的中文意思就是"重心",就是表示view横向和纵向的停靠位置 android:gravity:是对view控件本身来说的,是用来设置view本身的文本应该显示在vie ...
- sql 声明 将结果select 而混合值
String slctpsql="select id ,"+uid+","+ddd+","+score+",'"+mar ...