自定义数组的删除(伪删除)

删除的时候首先要找到要删除元素的索引,然后再把该索引之后的值赋值给前一个,最后数组长度再减一

int[] arr = {1,3,5,7,8,15,22,33,44,55,66};
        Scanner sc=new Scanner(System.in);//用户键盘录入要查找的数字

        System.out.println("请输入要查找的数字");
        int findNum=sc.nextInt();
        
        int low=0;//设定最小值
        int height=arr.length-1;//设定最大值
        int mid=0;//求取中间值的索引
        int count=arr.length;//获取数组的总长度
        boolean isFind=false;//标志位代表是否找到
        int delIndex=-1;//设置要删除元素的索引
        while(height>=low) {//由于不知道循环多少次所以用while循环,并且最大值总是大于等于最小值若是小于则重复查找了
            mid=(low+height)/2;
            if(findNum>arr[mid]) {
                low=mid+1;//当大于中间值时最小值索引改变为中间值+1,
            }
            else if(findNum<arr[mid]){
                height=mid-1;//当大小于中间值时改变为最大值索引为中间值-1
            }
            else if(findNum==arr[mid]) {//当满足条件时跳出循环,并且将标志位赋值为true
                isFind=true;
                System.out.println("恭喜找到了索引为"+mid);
                delIndex=mid; //获取要被删除数的索引
                break;    
            }
            
        }
        
        if(isFind!=true) {
            
                System.out.println("您所输入的数字无法找到");
            }
        
        count--;//删除之后数组长度要+1
        for (int i = mid; i <count ; i++) {
            arr[i]=arr[i+1];
        }
        for (int i = 0; i < count; i++) {
            System.out.println(arr[i]);
            
        }

猜你喜欢

转载自www.cnblogs.com/lzq-java/p/9297865.html