数组的基本操作

构建数组

int[] arr = new int[]{0,1,2,3,5,6,8}
//或者
int[] arr = {2,5,0,4,6,-10} 

推荐使用这种构建方式,除非你特别需要循环构建数组赋值

查找一个元素

    /**
     *
     * @param arr 数组
     * @param size 已存放元素个数
     * @param key 目标元素
     * @return 目标元素的索引
     */
    public static int findElement(int[] arr,int size,int key){
        for (int i = 0; i < size; i++) {
            if(arr[i] == key){
                return i;
            }
        }
        return -1;
    }

增加一个元素

  • 此处我们要维护数组是一个有序数组,这里的数组是单调递增的
    /**
     * 
     * @param arr 数组
     * @param size 已存放元素个数
     * @param key 目标元素
     * @return 返回插入位置的索引
     */
    public static int addElement(int[] arr,int size,int key){
        //首先要判断的是我们存放的元素个数是否会超过数组长度,如果当前元素个数大于等于了数组长度,就不允许添加了
        if (size >= arr.length){
            return -1;
        }
        //index就是我们目标元素要插入的索引位置
        int index = size;
        //这里之所以index=size而不是0或者size-1,就是有个特例就是目标元素为数组最大值
        for (int i = 0; i < size; i++) {
            if(key < arr[i]){
                index = i;
                break;
            }
        }
        /**
         上面是我们寻找插入位置,如果index初始值不为size,那么它若为最大值,它比arr[size-1]还大
         索引是从0到size-1,如果index为其他值,最终插入的位置都不对,你找个最大值的例子就知道了
        */

        //元素后移,这里j初始化为size也是由于index的值可能为size的原因
        for (int j = size; j > index; j--){
            arr[j] = arr[j - 1];
        }
        //插入元素
        arr[index] = key;

        return index;
    }

删除一个元素

    /**
     * 
     * @param arr
     * @param size
     * @param key
     * @return 返回数组剩余的元素个数
     */
    public static int removeElement(int[] arr,int size,int key){
        //初始化index为-1,算一个标记吧,如果之后遍历数组也没找到目标元素,index仍然为-1就可以结束了
        int index = -1;
        for (int i = 0; i < size; i++){
            if (arr[i] == key){
                index = i;
                break;
            }
        }
        //这里只能从左往右赋值
        if(index != -1){
            for (int i = index + 1; i < size ; i++) {
                arr[i - 1] = arr[i];
            }
            size--;
        }
        return size;
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值