java数据结构与算法的day03

        我们这次主要研究的是插入数据的问题,我们先明确一点,插入数据的本质是将原有的数据往后移动一定距离,给插入的数据腾出空间。

        首先,我们最先考虑什么条件是允许插入数据的。插入的数据如果超出数组长度是否允许插入?我相信,在数据存储容器有限长度的下,是不允许插入的,当然如果是集合就不需要考虑这方面的问题。在这里我们也发现了,数组和集合区别之一,数组有固定长度,集合没有固定,而集合更符合实际情况,所以我们把数组的增删改查写完后,我们日后都会采用集合的方式进行代码编写

        其次,是否满足插入条件。索引值或索引集是否超出范围,插入的内容是否符合数据类型或者对象。

        接着,每次插入,尾部的元素或者元素群,都会被剔除一部分的(有限定长度的情况)

        最后,我们根据插入内容的长度,分为两类,单个数据元素与多个数据元素群

        下面是这次我们插入数据的代码:

        (1)   插入元素

public static int[] insertElement(int arr[] , int index , int context){
       if(index-1<len(arr)){
           int t=arr[index-1];
           arr[index-1]=context;
           int s;
           for(;index<len(arr);index++){
               s = arr[index];
               arr[index] = t;
               t = s;
           }
           return arr;
       }else {
           System.out.println("索引超出范围");
           return arr;
       }
}

        (2)   插入元素群体

public static int[] insertElements(int arr[] , int index , int context[]){
    if(index-1<len(arr)&&len(context)<=(len(arr)-index)){
        int times = 0;
        int s = len(arr)-index+1;
        int t = index-1;
        int insertarr[] = new int[s];

        for(int i=0;t<len(arr);t++,i++){
            insertarr[i] = arr[t];
        }
        for(int i=0;i<len(context);index++,i++){
            arr[index-1] = context[i];
        }
        t = index-1;
        for(int i=0 ; t<len(arr) ; t++,i++){
            arr[t] = insertarr[i];
        }
        return arr;
    }else {
        System.out.println("索引超出范围");
        return arr;
    }
}

        (3)  测试

public static void main(String[] args) {
   
    System.out.println("===================接下来是插入元素的方法验证=================");
    int arr2[]= new int[10];
    for(int i = 0 ; i<6 ;i++){
        arr2[i]=i;
    }
    System.out.println("(没有充满元素的)原数组的内容:");
    printlist(arr2);
    System.out.println("\n我们在第二个位置插入数字9,新数组的内容:");
    insertElement(arr2,2,9);
    printlist(arr2);

    for(int i = 0 ; i<len(arr2) ;i++){
        arr2[i]=i;
    }
    System.out.println("\n(充满元素的)原数组的内容:");
    printlist(arr2);
    System.out.println("\n我们在第二个位置插入数字9,新数组的内容:");
    insertElement(arr2,2,9);
    printlist(arr2);

    System.out.println("\n===================接下来是插入元素群的方法验证=================");
    System.out.println("原数组的内容:");
    printlist(arr2);
    System.out.println("\n在第二个元素添加元素群体{8,0,1},新数组的内容:");
    int a[] = {8,0,1};
    arr2 = insertElements(arr2,2,a);
    printlist(arr2);
    System.out.println("\n原数组的内容:");
    printlist(arr2);
    System.out.println("\n在第6个元素添加元素群体{9,0,3,10},新数组的内容:");
    int b[] ={9,0,3,10};
    arr2 = insertElements(arr2,6,b);
    printlist(arr2);
    System.out.println("\n原数组的内容:");
    printlist(arr2);
    System.out.println("\n在第7个元素添加元素群体{1,1,1,1,1},新数组的内容:");
    int c[] ={1,1,1,1,1};
    arr2 = insertElements(arr2,7,c);
    printlist(arr2);
}

        另外呢,其实还有前插和尾插,这个大家可以根据实际情况自行选择,我这里都是特定位置的插入!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值