Java基础算法题(30):有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

查看所有50道基础算法题请看:

Java的50道基础算法题

package Demo30Array_Insert;
import java.util.Arrays;
import java.util.Scanner;
import static java.lang.Integer.*;
public class Array_Insert {
    /**
     * 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
     */
    /*
    分析:有一个已经排好序的数组,我们可以直接构建一个数组,也可以让用户输入一组数据,然后将它转换成数组,
         再排序,传统的如冒泡法之类的,这里为了简单,我想还是用Arrays类的sort()方法来排序
         在插入这一步操作,我们再去遍历这个数组。总体思路就这些。
     */
    public static void main(String[] args) {
        //获取用户的输入
        Scanner sc = new Scanner(System.in);
        System.out.println("请您输入一组数字,以逗号(中英文都可)结尾:");
        String nums = sc.next();
        //将这个字符串分割成字符串数组
        String[] splits = nums.split(",|,");
        System.out.println(splits.length);
        //创建一个跟字符串数组一样长的int数组
        int[] array = new int[splits.length];
        try{
            //将这个字符串数组转换成数字装到int数组中
            for (int i = 0; i < splits.length; i++) {
                array[i]= parseInt(splits[i]);
            }
            //使用Arrays的toString方法得到一个原先数组的字符串
            String origin = Arrays.toString(array);
            //使用Arrays的sort()方法对数组进行排序
            Arrays.sort(array);
            //再次使用toString方法获得一个排过序之后的数组字符串形式
            String sorted = Arrays.toString(array);
            System.out.println("原先的数组:"+origin);
            System.out.println("排序后的数组:"+sorted);
            //获取用户要插入的数字
            System.out.println("请您输入需要插入的数字: ");
            int in = sc.nextInt();
            //开始插入,新建一个长度比原来数组加一个的新int数组
            int[] insert = new int[array.length+1];
            //定义一个标记,来确定那个数字有没有插进去,没插进去是true,插进去后设为false
            boolean flag = true;
            //遍历两个数组,插入数字
            for (int j = 0; j <= array.length; j++) {
                if(flag){
                    if(in<=array[j]){
                        insert[j]=in;
                        flag=false;
                    }else{
                        insert[j]=array[j];
                    }
                }else{
                    insert[j]=array[j-1];
                }
            }
            System.out.println(Arrays.toString(insert));
        }catch (NumberFormatException e){
            System.out.println("您输入的数字格式不对,请重新输入,一定要是数字哦...");
        }
    }
}

发布了54 篇原创文章 · 获赞 1 · 访问量 2299

猜你喜欢

转载自blog.csdn.net/weixin_44803446/article/details/105376982