用java语言编写,要有代码加运行的截图

在一个升序排列的数据序列(1,3,5,7,9)中插入 x=2,使得插入后序列仍然 保持升序排列。

代码:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class demo_java {
    public static void main(String[] args) {
        // 初始化
        List<Integer> list = new ArrayList<>(Arrays.asList(1, 3, 5, 7, 9));
        System.out.println(list);
        // 插入 2
        list.add(2);
        Collections.sort(list); // 排序
        System.out.println(list);
    }
}

打印结果:

[1, 3, 5, 7, 9]
[1, 2, 3, 5, 7, 9]

Process finished with exit code 0

遍历原有序列,从第一个开始向后开始查找大于当前x=2的数,将当前数以及后面的数依次往后移动一位,然后将x=2填充到满足if条件时的索引位置。

import java.util.Arrays;
public class NumberTest {
    public static void main(String[] args) {
        //假定数组有序
        int a[]={-1,0,3,4,7};
        int b[]=new int[a.length+1];
        for (int i = 0; i < a.length; i++) {
            b[i]=a[i];
        }
        System.out.println("原数组:"+Arrays.toString(a));
        int x=2;
        boolean isInsert=false;
        for (int i = b.length-2;i>=0 ; i--) {
            if(b[i]>x){
                b[i+1]=b[i];
                continue;//退出此次循环
            }
            if(b[i]<=x){
                b[i+1]=x;
                isInsert=true;
                break;
            }
        }
        if(isInsert==false){
            b[0]=x;
        }
        System.out.println("插入元素之后数组:"+Arrays.toString(b));
    }
}

我写给你

img

img

img



import java.util.Arrays;
import java.util.*;

public class Dome2 {

    //头插法
    private List insertHead(int [] arr,int data){
        int len =arr.length;
        int [] a =new int[len+1];
        int k=0;
        if (data<=arr[0])  a[k]=data;
        for (int i = 0; i <=len-1 ; i++) {
            k+=1;
            a[k]=arr[i];
        }
        List<Integer> list =new ArrayList<>();
        for (int num:a) {
            list.add(num);
        }
        return list;

    }
    //插入数据到数组之中
    private List insertBody(int [] arr,int data){
        int len =arr.length;
        int [] a =new int[len+1];
        int k=0;//通过移动k插入数据
        for (int i = 0; i <=len-1 ; i++) {
            if(data>=arr[i]&&data<=arr[i+1]){
                a[k]=arr[i];
                k+=1;
                a[k]=data;
                i+=1;
                k+=1;
            }
            a[k]=arr[i];
            k+=1;
        }
        List<Integer> list =new ArrayList<>();
        for (int num:a) {
            list.add(num);
        }
        return list;
    }
    //尾插法
    private List insertTial(int [] arr,int data) {
        int len = arr.length;
        int[] a = new int[len + 1];
        int k = 0;
        for (int i = 0; i <= len - 1; i++) {
            a[k] = arr[i];
            k += 1;
        }
        if (data >= arr[len - 1]) a[k] = data;
        List<Integer> list = new ArrayList<>();
        for (int num : a) {
            list.add(num);
        }
        return list;
    }
    public static void main(String[] args) {
        int [] arr ={1,3,5,7,9};
        System.out.println("输入的有序数组arr为:"+Arrays.toString(arr));
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入插入的数据:");
        int x=sc.nextInt();
        if(arr[0]<=x&&arr[arr.length-1]>x) {
            System.out.println("在数组之中插入数据"+x+"后有序的数组为:" + new Dome2().insertBody(arr, x));
        }
        else if (arr[arr.length-1]<=x)
        {
            System.out.println("在数组之中插入数据"+x+"后有序的数组为:" + new Dome2().insertTial(arr, x));
        }
        else
        {
            System.out.println("在数组之中插入数据"+x+"后有序的数组为:" + new Dome2().insertHead(arr, x));
        }
    }
}


import java.util.Arrays;

public class Test01 {
    public static void main(String[] args) {
        int[] data = new int[]{1, 3, 5, 7, 9}; //原始数组
        int insertValue = 2; //待插入的值
        int[] result = new int[data.length + 1];// 原始数组扩容+1
        int j = 0;//结果数组起始下标
        boolean inserted = false;//是否已经将插入的值插入
        for (int i = 0; i < data.length; i++) {
            if (!inserted && data[i] > insertValue) { //如果插入值小于原始数组的值,并且未插入
                result[j++] = insertValue;//插入待插入的值
                inserted = true;//插入标识设置为true
            }
            result[j++] = data[i];//插入原始数组的值
        }
        System.out.println(Arrays.toString(result));
    }
}
import java.util.Arrays;
public class Main {
    static int[] a = {1, 3, 5, 7, 9, 0};
    public static void main(String[] args) {
        System.out.println("插入前:" + Arrays.toString(a));
        for (int i = 0; i < a.length; i++) {
            if (a[i] >= 2) { //找到要插入的位置
                //从i开始,将数组整体向后移动,数组变为--{1,要插入的位置,3,5,7,9}
                for (int j = a.length - 1; j >= i; j--) a[j] = a[j - 1];
                a[i] = 2;//最后把空的位置赋值为2
                break;
            }
        }
        System.out.println("插入后:" + Arrays.toString(a));
    }
}

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632