美文网首页
JAVA数据结构之数组

JAVA数据结构之数组

作者: 砌月东谷 | 来源:发表于2021-07-05 22:54 被阅读0次
public class hightArray {

    private long[] a;
    private int nElems;

    public hightArray(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;
        }
    }

    /**
     * 二分查找元素
     * @param searchKey
     * @return
     */
    public int find2(long searchKey){
        int lowerBound=0;
        int upperBound=nElems-1;
        int curInt;

        while (true){
            curInt=(lowerBound+upperBound)/2;

            if(a[curInt]==searchKey){
                return curInt;
            }
            else if(lowerBound>upperBound){
                return nElems;//not found
            }
            else{
                if(a[curInt]<searchKey){
                    lowerBound=curInt+1;
                }else{
                    upperBound=curInt-1;
                }
            }
        }
    }

    public void insert(long value){
        a[nElems]=value;
        nElems++;
    }

    public boolean delete(long value){
        //要删除一个数组的元素要先看看数组中是否包含元素
        int j;
        for(j=0;j<nElems;j++){
            if(a[j]==value){
                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.println(a[j]);
        }
    }
}

通过上面的代码,我们发现数组是能完成一个数据结构所有的功能的,而且实现起来也不难,那数据既然能完成所有的工作,我们实际应用中为啥不用它来进行所有的数据存储呢?那肯定是有原因呢。

数组的局限性分析:

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

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

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

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

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

相关文章

  • Java 面试系列:数组和排序算法的应用 + 面试题

    数组的定义与使用 数组是 Java 编程中最重要的数据结构之一,也是最基本的数据结构,Java 中的常用集合 Ar...

  • 重温:数据结构与算法 - 03数组

    数据结构与算法之美 - 数组 数据结构与算法之美-学习大纲 什么数组? 数组是一种 线性表 数据结构。它用一组 连...

  • Java常用的数据结构

    Java常用的数据结构 Java中的数据结构: 数组(Array) 链表(Linked List 一种递归结构数据...

  • 数据结构之数组

    数据结构之数组 这个系列是在学习慕课网玩转数据结构课程的学习笔记,用JAVA语言来重新系统的整理一下数据结构的知识...

  • JAVA数组的定义,遍历的方法

    Java中的数组是用来存放同样类型元素的数据结构,在数组创建完成后,该数组长度是不可变的。 数组的声明 Java是...

  • Java编程基础(9)

    Java编程基础- Java数组-针对数组(Array)的各种操作: 数组是最常见的一种数据结构,它是相同类型的用...

  • JAVA数据结构之数组

    通过上面的代码,我们发现数组是能完成一个数据结构所有的功能的,而且实现起来也不难,那数据既然能完成所有的工作,我们...

  • HashMap源码解读

    1. 数据结构 在Java中,是通过数组和链表这俩种数据结构来进行数据存储的。 数组: 数组的存储空间的连续的,...

  • 2019-07-19数据结构

    计算机本来没有算法先有编码,后有数据结构,然后有可算法 基础数据结构 数组 java 内置 顺序存储数组的缺点,...

  • 复习

    数据结构 数据结构 集合常见数据结构:集合,链表,队列,数组,栈,映射java中:List列表,Set集合,Map...

网友评论

      本文标题:JAVA数据结构之数组

      本文链接:https://www.haomeiwen.com/subject/mbubultx.html