我对java基础和数据结构,算法学得好的人很佩服,毕竟无论什么时候,基础的学习才是最重要的.以前学过数据结构,现在重新温习一下.
数组分为有序数组与无序的数组,在一个无序数组中可以很快进行插入,花费O(1)时间,但查找与删除都速度比较慢O(n)时间;有序数组,查找很快O(1)时间花费,但插入却花费O(n)时间.
(本文的例子是摘<<data java="" in="" algorithms="" structures=""></data>>这一本书的)
下面看一个无序数组的例子
- package org.h2;
-
-
-
-
-
-
-
- class HighArray {
- private long[] a;
-
- private int nElems;
-
-
-
- public HighArray(int max)
- {
- a = new long[max];
- nElems = 0;
- }
-
-
- public boolean find(long searchKey) {
- int j;
- for (j = 0; j < nElems; j++)
- if (a[j] == searchKey)
- break;
- if (j == nElems)
- return false;
- else
- return true;
- }
-
-
-
- public void insert(long value)
- {
- a[nElems] = value;
- nElems++;
- }
-
-
- public boolean delete(long value) {
- int j;
- for (j = 0; j < nElems; j++)
- if (value == a[j])
- break;
- if (j == nElems)
- return false;
- else {
- for (int k = j; k < nElems; k++)
- a[k] = a[k + 1];
- nElems--;
- return true;
- }
- }
-
-
-
- public void display()
- {
- for (int j = 0; j < nElems; j++)
- System.out.print(a[j] + " ");
- System.out.println("");
- }
- }
-
注:find方法中的如下语句: if (j == nElems)
return false; // 没有在数组中找到元素
else
return true; // 在数组中找到元素
可以用这一条语句来替代return (j!=nElems);
再写一个类:
- package org.h2;
-
- class HighArrayApp
- {
- public static void main(String[] args)
- {
- int maxSize = 100;
- HighArray arr;
- arr = new HighArray(maxSize);
-
- arr.insert(77);
- arr.insert(99);
- arr.insert(44);
- arr.insert(55);
- arr.insert(22);
- arr.insert(88);
- arr.insert(11);
- arr.insert(00);
- arr.insert(66);
- arr.insert(37);
-
- arr.display();
-
- int searchKey = 35;
- if( arr.find(searchKey) )
- System.out.println("找到 " + searchKey);
- else
- System.out.println("不能找到" + searchKey);
-
- arr.delete(00);
- arr.delete(55);
- arr.delete(99);
-
- arr.display();
- }
- }
-
运行结果如下:
77 99 44 55 22 88 11 0 66 37
不能找到35
77 44 22 88 11 66 37
下面看一个有序数组的例子,比较上面的,看一下两者的不同之处
java 代码
分享到:
相关推荐
4. 数组和指针:数组是一种数据结构,可以存储多个相同类型的数据。指针是一种变量,存储的是内存地址。指针可以 用来访问数组中的元素。 5. 控制结构:控制结构包括顺序结构、选择结构、循环结构等。控制结构可以...
- 基础数据结构:数组、链表、栈、队列、树、图等。 - 常见算法:排序算法(如快速排序、归并排序、堆排序等),搜索算法(如深度优先搜索、广度优先搜索等)。 - 高级算法主题:动态规划、贪心算法、回溯算法、分治...
javascript实现数据结构题 使用javascript实现经典的数据结构面试题。练手和温习 水平有限,如有缺漏,望见谅! 文件结构: 1)ADT ———— 抽象数据类型(ADT) 包含:list(列表),llist(链表),queue(队列)...
所以在此重新温习了一下 mybatis, 因此就有了这个系列的 mybatis 教程. 什么是mybatis MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果...
4. **数组和字符串**:数组是存储同类型元素集合的数据结构,而字符串是字符数组的特殊形式。学习如何处理数组,特别是字符串操作(如字符串复制、比较和查找),对于实际编程很有帮助。 5. **结构体与联合体**:...
本文介绍了多个实用的 Java 编程实训题及其实现方式,内容覆盖基础语法(HelloWorld程序、变量、if/else等条件判断), 控制结构(for循环), 面向对象编程(类的创建,继承),以及基础数据结构(数组的操作). 它还包括了...
理解它们的使用及内存布局,对理解和使用复杂数据结构有极大帮助。 5. **动态内存分配**:通过malloc和free函数,我们可以动态地分配和释放内存,这对于处理不确定大小的数据或避免浪费内存非常重要。 6. **文件...
C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的...
学生在课程设计过程中,通过重新温习C语言和应用数据结构知识,提高了编程技能,学会了独立思考和解决问题。同时,也体验到了团队合作的重要性,增强了动手操作和问题解决的能力。在反思中,学生表示虽然遇到困难,...
这个“vue前四天学习知识的温习小项目”旨在帮助初学者巩固在短时间内学习Vue.js的基本概念和技术。通过实际操作一个小项目,可以更好地理解和应用所学知识。 1. **Vue.js基本概念** - **Vue实例**:Vue应用程序的...
在第四周,需要学习《软件设计官方教程【第5版】》第3章数据结构(线性结构、数组、矩阵和广义表和树三部分,对应前1-3个知识点)。数据结构是软件设计师考试的基础知识之一,需要掌握对应的线性结构的特点。上午的...
2. 数据结构与算法:如链表(或数组)实现蛇的身体,以及碰撞检测算法。 3. 图形编程:了解基本的2D图形绘制,如像素操作、坐标系统、帧率控制。 4. 用户输入处理:学习如何捕获和响应用户输入事件。 5. 时间管理:...
6. **数组与指针**:数组是相同类型元素的集合,而指针则存储内存地址,两者结合使用可以实现高效的数据处理。指针的使用是C语言的一大特点,也是其难点之一。 7. **结构体与联合**:结构体允许将不同类型的数据...
4. **结构体与联合体**:C语言中的复合数据类型,如结构体和联合体,可以用来表示更复杂的数据结构。通过实例,你可以看到如何定义、初始化和操作这些结构。 5. **内存管理**:源代码可能包括动态内存分配(`malloc...
- **指针**:C语言的一个强大特性是支持指针,可以直接操作内存地址,进行高效的数据操作和复杂的数据结构实现。 - **预处理指令**:如#define用于常量定义,#include用于引入头文件,#ifdef/#ifndef用于条件编译...
停车位可以看作是一个数组或者链表,每个元素代表一个车位的状态(空闲或占用)。查找空车位的过程可能使用了线性搜索(遍历所有车位),如果车位数量较大,可能会优化为二分查找或者哈希映射来提高效率。此外,为了...
14.7.1 函数传参实例一——求数组所有元素的和 14.7.2 函数传参实例二——用递增法查找数据 14.7.3 函数传参实例三——用二分算法查找数据 14.7.4 函数传参实例四——判断数组是否按照顺序排列 14.7.5 函数传参实例...
14.7.1 函数传参实例一——求数组所有元素的和 14.7.2 函数传参实例二——用递增法查找数据 14.7.3 函数传参实例三——用二分算法查找数据 14.7.4 函数传参实例四——判断数组是否按照顺序排列 14.7.5 函数传参...
数组是JavaScript中一种用于储存有序数据集合的数据结构。它允许我们以一种容易管理和访问的方式存储多个元素。在实现网页标题随机显示名言的场景中,我们将使用数组来存储所有的名人名言。 接下来是字符串(string)...