博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(二)Java数据结构和算法——数组
阅读量:7098 次
发布时间:2019-06-28

本文共 1963 字,大约阅读时间需要 6 分钟。

一、数组的实现

  • 上一篇博客我们介绍了一个数据结构必须具有以下基本功能:

  ①、如何插入一条新的数据项

  ②、如何寻找某一特定的数据项

  ③、如何删除某一特定的数据项

  ④、如何迭代的访问各个数据项,以便进行显示或其他操作

 

package arrays;import java.util.Arrays;public class MyArray {    private int[] intArray;    private int elems;    private int length;    /**     * 默认创建一个长度为50的素组     */    public MyArray(){        elems = 0;        length = 50 ;        intArray = new int[length];    }    /**     * 自定义数组长度     * @param length     */    public MyArray(int length){        elems = 0;        this.length = length;        intArray = new int[length];    }    public int getSize(){        return elems;    }    /**     * 遍历数组     */    public void display(){        for(int i=0;i
elems){ System.out.println("数组元素越界"); } return intArray[index]; } /** * 查找元素 * * @return 如果找到则返回元素下标,如果不存在则返回-1 */ public int search(int value){ for(int i=0;i

测试:

public static void main(String[] args) {        MyArray myArray = new MyArray(7);        myArray.add(1);        myArray.add(10);        myArray.add(15);        myArray.add(20);        myArray.add(25);        myArray.display();        System.out.println("第0个元素为="+myArray.get(0));        myArray.delete(1);        System.out.println("删除后的数组为");        myArray.display();        myArray.modify(15,1555);        System.out.println("修改后的数组为");        myArray.display();    }

结果:

 

二、数组的优缺点

数组的局限性分析:

  ①、插入快,对于无序数组,上面我们实现的数组就是无序的,即元素没有按照从大到小或者某个特定的顺序排列,只是按照插入的顺序排列。无序数组增加一个元素很简单,只需要在数组末尾添加元素即可,但是有序数组却不一定了,它需要在指定的位置插入。

  ②、查找慢,当然如果根据下标来查找是很快的。但是通常我们都是根据元素值来查找,给定一个元素值,对于无序数组,我们需要从数组第一个元素开始遍历,直到找到那个元素。有序数组通过特定的算法查找的速度会比无需数组快,后面我们会讲各种排序算法。

  ③、删除慢,根据元素值删除,我们要先找到该元素所处的位置,然后将元素后面的值整体向前面移动一个位置。也需要比较多的时间。

  ④、数组一旦创建后,大小就固定了,不能动态扩展数组的元素个数。如果初始化你给一个很大的数组大小,那会白白浪费内存空间,如果给小了,后面数据个数增加了又添加不进去了。

  很显然,数组虽然插入快,但是查找和删除都比较慢,而且扩展性差,所以我们一般不会用数组来存储数据,那有没有什么数据结构插入、查找、删除都很快,而且还能动态扩展存储个数大小呢,答案是有的,但是这是建立在很复杂的算法基础上,后面我们也会详细讲解。

 

转载于:https://www.cnblogs.com/shyroke/p/9389466.html

你可能感兴趣的文章
categorys源码
查看>>
果粉们注意:Mac误删的照片也能恢复
查看>>
CentOS查看内核版本,位数,版本号
查看>>
mac安装thrift
查看>>
spring boot入门 -- 介绍和第一个例子
查看>>
在小程序后端中转获取接口数据,绕过前端调用限制
查看>>
Google Chrome插件开发-Context Menus
查看>>
把Java中\u格式的unicode编码转成中文
查看>>
构建一个高性能的网页抓取器,互联网营销
查看>>
写出优雅简明代码的论题集 -- Csharp(C#)篇[2“.NET研究”]
查看>>
23个适合logo设计的常用英文字体
查看>>
一个Demo让你掌握所有的android控件
查看>>
simplexml_load_string解析xml数据
查看>>
浅谈Redis数据库的键值设计(转)
查看>>
XML学习总结(二)——XML入门
查看>>
主键思维定势导致的惨案
查看>>
Oracle中merge into的使用
查看>>
C与asm链接和内嵌
查看>>
MusicXML 3.0 (10) - 换行、换页
查看>>
【转载】用C#获取局域网内所有机器
查看>>