首页 > 编程语言 >java顺序数组插入元素

java顺序数组插入元素

时间:2022-12-04 15:46:49浏览次数:77  
标签:index arr java int 插入 num 数组 copy

本文主要阐明已知顺序数组,在数组中插入一个数据元素,使其仍然保持有序。

one

 

 关键是寻找num在原数组中插入的位置;

当num在原数组中是最大的情况,num应该插入到原数组的末尾。

否则,应该遍历原数组,通过比较原数组元素和num,找到插入位置,进行右移,最后在指定位置上插入num元素。

public class Two {
    public int[] SortArray(int[] arr,int num) {
        int index = 0;
        int[] arr_copy = new int[arr.length+1];
        for(int i =0 ;i<arr.length;i++) {
            arr_copy[i] = arr[i];
        }
        
        // 最后一个元素
        if(arr_copy[arr.length-1] <= num) {
            arr_copy[arr_copy.length-1] = num;
            return arr_copy;
        }
        
        for(int i =0;i<arr.length;i++) {
            if(arr_copy[i] > num) {
                index = i;
                break;
            }
        }
        
        // 将index之后的数据右移,空出index索引指向的空间。
        // i > index,不能是i >= index;
        // 当index = 0 时,若i >= index,则最后一次循环i = 0,则
        // arr_copy[i] = arr_copy[i-1];  数组越界报错!!!
        for(int i = arr_copy.length-1;i > index;i--) {
            // index之后的数据向右移动
            arr_copy[i] = arr_copy[i-1];
        }
        arr_copy[index] = num;
        
        return arr_copy;
    }
    public static void main(String[] args) {
        int[] arr = {10,12,45,90};
        // 加入23后依然是升序
        System.out.println("请输入数据:");
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        Two obTwo = new Two();
        arr = obTwo.SortArray(arr, num);
        for(int i = 0; i<arr.length;i++) {
            System.out.print(arr[i] + " ");
        }
        
    }

}

 

标签:index,arr,java,int,插入,num,数组,copy
From: https://www.cnblogs.com/zwgitOne123/p/16949981.html

相关文章