台州招聘网:数据结构与算法系列(一)数组实现

admin 3个月前 (07-01) 科技 51 1

数据结构与算法系列(一)数组实现

注:这是一个新的系列,主要是由于数据结构与算法是程序员以后立身的基本,我以前在大学也学过,然则很快就忘记了,现在想把它捡起来,通过写一个系列文章,加深自己的明白,实在我写这个系列主要是想先通过预热,然后去刷leetcode。刷算法自己是想磨炼自己写程序的头脑,不想由于天天写营业代码,导致自己头脑僵化,此系列会与springboot系列同时更新,立个falg。

java实现数组

说明:

  • 数组是一段拥有延续存储相同类型的结构,并且是一种线性结构,由于是线性结构,以是数组中每一个数据,都有,然则注重,不包括最先数据(首)和末数据。
  • 数组有一个非常重要的特征,那就是随机接见

1.界说数组

数组有两个基本变量:

  • 数组长度:寄义是示意数组自己巨细
  • 数组存储详细数据的延续空间
 // 数组申请空间的长度
    private int size = 0;
    // 数组现实长度
    private int count;
    // 数组现实存储
    private int array[];

2.基本方式:组织方式 增 删 查 改

组织方式

   /**
     * 组织方式-初始化
     * @param capacity 数组初始化长度
     */
    public MyArray(int capacity) {
        this.size = capacity;
        this.array = new int[capacity];
        this.count = 0;
    }
  // 使用组织方式,初始化空间巨细
  MyArray myArray = new MyArray(6);

新增

注:新增本质上就是在延续的空间插入新的数据,我现在已知两种
  • 第一种,就是先将从数组的尾部位置最先依次将数据向后移动一位,将index所指向的位置腾出来,利便插入新的数据。如图所示,先后依次移动 55 44 33 ,这样,位置就空出来,切忌不能先移动33,若是先移动 33,则33会直接覆盖掉44。代码如下
  • 第二种,就是直接将指定index位置的数据直接取出,放到数组的末尾,这样就避免了数组的整体移动,当数据量很大的时刻,可以思量这种做法。
   /**
     * 凭据索引在指定位置插入数据
     * @param index 索引
     * @param value 带插入的值
     */
    protected boolean myArrayInsert(int index,int value){

        // 判断数组是否另有空余空间
        if (count == size){
            System.out.println("没有可插入的空间");
            return false;
        }

        // 判断是否越界
        if (index < 0 || index >= size){
            System.out.println("数组越界异常");
            return false;
        }

        // 循环,从插入的位置最先依次将数据向后移动,将index所指向的位置腾出来,利便插入新的数据
        for (int i = count; i > index; i--) {
            array[i] = array[i-1];
        }
        array[index] = value;
        count ++ ;
        System.out.println("插入乐成");
        return true;
    }

删除:同新增,依然有两种方式

  • 第一种:index索引删除的位置最先,后面的元素依次向前移动一位,将前面的覆盖掉就行了。然则依然需要移动索引之后的每一个元素。
  • 第二种:最简朴的就是,直接将数组的最后一位元素放入 index的位置,这样就减少了数据的移动
   /**
     * 删除指定位置的数
     * @param index 索引
     */
    protected boolean myArrayDel(int index){
        if (index < 0 || index >= count){
            System.out.println("索引越界");
            return false;
        }

        for (int i = index; i < count - 1; i++) {
            array[i] = array[i + 1];
        }
        count --;
        System.out.println("删除乐成");
        return true;
    }

查询:返回查询乐成之后数据的索引值

   /**
     * 数组查询
     * @param value 待查询的值
     * @return 返回该值对应的索引
     */
    protected int myArrayFind(int value){
        for (int i = 0; i < count; i++) {
            if (array[i] == value){
                System.out.println("查询乐成");
                return i;
            }
        }
        System.out.println("查询不乐成,该数不存在");
        return -1;
    }

修改

   /**
     * 修改替换指定位置的数据
     * @param index 指定位置索引
     * @param value 值
     * @return 是否修改乐成
     */
    protected boolean myArrayModify(int index,int value){
        if (index < 0 || index >= count){
            System.out.println("索引越界");
            return false;
        }

        array[index] = value;
        return true;
    }

打印输出:为了利便查询效果,提供打印方式

   /**
     * 数组打印
     *
     */
    protected void printAll(){
        System.out.println("当前数组现实长度:" + count);
        System.out.println("申请的数组空间巨细:" + size);
        for (int i = 0; i < count; i++) {
            System.out.println("位置:" + i + "----" + array[i]);
        }
    }

测试

public static void main(String[] args) {
        MyArray myArray = new MyArray(6);
        myArray.myArrayInsert(0,0);
        myArray.myArrayInsert(1,1);
        myArray.myArrayInsert(2,2);
        myArray.myArrayInsert(3,3);
        myArray.myArrayInsert(4,4);
        myArray.myArrayInsert(5,5);

        // 新增
        myArray.myArrayInsert(2,3);
        // 删除
        myArray.myArrayDel(0);

        // 查询
        int i = myArray.myArrayFind(4);
        System.out.println("对应的索引位置:" + i);
		// 修改
        myArray.myArrayModify(1,9);

        myArray.printAll();
    }

注:以上就是数组的基本操作了,属于小我私家明白,可能略显浅易,有错误的地方迎接指正与交流。

希望自己能一直保持初衷,文章一直写下去,和人人一起发展

本系列代码github地址:https://github.com/shanggushenlong/Data_Structures_and_Algorithms_Java

,

Sunbet

Sunbet www.ningyanganews.com Sunbet以著名的服务态度及优秀的网络环境,Sunbet客服24小时在线让你玩得过瘾,赢得开心。

Allbet声明:该文看法仅代表作者自己,与本平台无关。转载请注明:台州招聘网:数据结构与算法系列(一)数组实现

网友评论

  • (*)

最新评论

  • ALLBET官网开户网址 2020-07-01 03:09:40 回复

    Allbet Gmaing官网欢迎进入Allbet Gmaing官网(www.aLLbetgame.us):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。谁说不好跟谁急

    1

站点信息

  • 文章总数:521
  • 页面总数:0
  • 分类总数:8
  • 标签总数:945
  • 评论总数:144
  • 浏览总数:3159