数组练习题_Java基础

1.需求:定义一个方法,找出int数组中,最大值的索引下标
[1,2,23,5,6,7,8]

public static void main(String[] args) {
        int[] arr = {1,2,23,5,6,7,8};
        index(arr);//2
    }
    /*
       1.需求:定义一个方法,找出int数组中,最大值的索引下标
       [1,2,23,5,6,7,8]
        */
    public static void index(int[] arr){
        int max = arr[0];//最大值
        for (int i = 0; i < arr.length; i++) {
            if (max < arr[i]){
                max = arr[i];
            }
        }
        for (int i = 0; i < arr.length; i++) {
            if (max == arr[i]){//最大值的下标
                System.out.println(i);
            }
        }
    }

2.在一个数组中,找出所有的 指定数据的下标位置
[1,2,8,4,5,7,8,7,8,9]

public static void main(String[] args) {
      /*
        在一个数组中,找出所有的 指定数据的下标位置
        [1,2,8,4,5,7,8,7,8,9]
     */
        int[] arr = {1,2,8,4,5,7,8,7,8,9};
        //创建数组记录元素出现的所有下标位置,会有多余元素需要处理
        int[] tempArr = new int[10];
        //元素添加的位置
        int index = 0;
        for (int i = 0; i < arr.length; i++) {
            if (8 == arr[i]){
                tempArr[index] = i;
                index++;
            }
        }
        //处理过的数组
        int[] newArr = new int[index];
        for (int i = 0; i < newArr.length; i++) {
            newArr[i] = tempArr[i];
        }
        //打印数组元素
        System.out.println(Arrays.toString(newArr));
    }

3.【难】. 完成一个方法,替换掉数组中所有元素为0的元素,替换为指定元素     [1,2,3,0,0,0]

public static void main(String[] args) {
        /*
        【难】. 完成一个方法,替换掉数组中所有元素为0的元素,替换为指定元素
        [1,2,3,0,0,0]
         */
        //原数组
        int[] arr = {1,2,3,0,0,0};
        //需要替换的元素数组
        int[] arr1 = {4,5,6};
        //记录 所有 元素为 0 的位置
        int[] tempArr = new int[arr.length];
        //起始位置
        int index = 0;
        //所有元素为0的 下标添加到数组tempArr中
        for (int i = 0; i < arr.length; i++) {
            if (0 == arr[i]){
                tempArr[index] = i;
                index++;
            }
        }
        //替换的数组元素添加到arr数组中
        for (int i = 0; i < arr1.length; i++) {
            arr[tempArr[i]] = arr1[i];
        }
        System.out.println(Arrays.toString(arr));
    }

4.【难】. 完成一个方法,删除指定下标的元素,要求从删除位置开始,
    之后的元素整体前移。【难】
[1,2,3,4,5,6,7]=>[1,2,4,5,6,7,0]

public static void main(String[] args) {
        test(2);
    }
    /*【难】. 完成一个方法,删除指定下标的元素,要求从删除位置开始,
        之后的元素整体前移。【难】
	    [1,2,3,4,5,6,7]=>[1,2,4,5,6,7,0]
        */
    public static void test(int index){
        int[] arr = {1,2,3,4,5,6,7};
        //指定位置的元素去除,后面的元素往前移动
        for (int i = index; i < arr.length-1; i++) {
            arr[index] = arr[index+1];
            index++;
        }
        arr[arr.length-1] = 0;//最后一个元素为0直接添加
        System.out.println(Arrays.toString(arr));
    }

5.【难】. 完成一个方法,添加指定元素到指定下标位置, 要求从指定下标位置之后的元素,整体向后移动。【难】 [1,2,3,4,5,0]=>[1,2,250,3,4,5]

public static void main(String[] args) {
        addE(250,5);
    }
    /*
    【难】. 完成一个方法,添加指定元素到指定下标位置,
    要求从指定下标位置之后的元素,整体向后移动。【难】
	[1,2,3,4,5,0]=>[1,2,250,3,4,5]
     */
    public static void addE(int e,int index){
        int[] arr = {1,2,3,4,5,0};
        //创建长度为 arr数组长度 - index下标
        int[] tempArr = new int[arr.length - index - 1];
        //添加元素的起始下标
        int n = 0;
        //把指定位置后的元素添加到临时数组
        for (int i = index; i < arr.length-1; i++) {
            tempArr[n] = arr[i];
            n++;
        }
        //指定元素添加指定位置
        arr[index] = e;
        //把临时数组中的元素添加到原数组中
        for (int i = 0; i < tempArr.length; i++) {
            arr[index+1] = tempArr[i];
            index++;
        }
        System.out.println(Arrays.toString(arr));
    }

6.【难】. 找出数组中最大的元素,放到下标为0的位置

public static void main(String[] args) {
        addIndex();
    }
    /*
    【难】. 找出数组中最大的元素,放到下标为0的位置
    1,2,250,3,4,5
     */
    public static void addIndex(){
        int[] arr = {1,250,2,3,4,5};
        int max = 0;//最大值
        int index = 0;//最大值的位置
        //找出最大值和下标
        for (int i = 0; i < arr.length; i++) {
            if (max < arr[i]){
                max= arr[i];
                index = i;
            }
        }
        int[] tempArr = new int[index];
        //最大值前面的元素添加到数组中
        for (int i = 0; i < index; i++) {
            tempArr[i] = arr[i];
        }
        arr[0] = max;
        //把临时数组添加到原数组
        for (int i = 0; i < tempArr.length; i++) {
            arr[i+1] = tempArr[i];
        }

        System.out.println(Arrays.toString(arr));
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值