Java基础50道经典练习题(30)——插入数字

【程序 30 插入数字】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
 
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的
数,依次后移一个位置。
 
源程序:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package com.homework.test;
import java.util.Scanner;
/*
【程序 30 插入数字】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的
数,依次后移一个位置。
 */
public class Test30 {
    public static void main(String [] args){
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入要插入的数:");
        int m = scan.nextInt();
        scan.close();
        int[] a = {1,2,3,5,6,7,8}; // 4
        int[] b = new int[8];
        int len = a.length;
        int flag = 0;
 
        //此处只考虑了原数组是升序的,降序同理
        if (m > a[0]){
            for (int i=0; i<len; i++){
                if (m < a[i]) {
                    b[i] = m;
                    flag = i;
                    break;
                }
                b[i] = a[i];
            }
            for (int j=flag+1; j<len+1; j++)
                b[j] = a[j-1];
 
        }
        if (m >= a[6]){
            b[7] = m;
            for (int i=0; i<len; i++)
                b[i] = a[i];
        }
 
         
        for (int i=0; i<len+1; i++){
            System.out.print(b[i] + " ");
        }
        System.out.println();
 
    }
 
 
}

  

posted on   lifelicanpeng  阅读(261)  评论(0编辑  收藏  举报

编辑推荐:
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
阅读排行:
· 后端思维之高并发处理方案
· 想让你多爱自己一些的开源计时器
· Cursor预测程序员行业倒计时:CTO应做好50%裁员计划
· 上周热点回顾(3.24-3.30)
· 大模型 Token 究竟是啥:图解大模型Token
点击右上角即可分享
微信分享提示