首页 > 试题广场 >

有序序列插入一个整数

[编程题]有序序列插入一个整数
  • 热度指数:30284 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序。

输入描述:
第一行输入一个整数N(0≤N≤50)。

第二行输入N个升序排列的整数,输入用空格分隔的N个整数。

第三行输入想要进行插入的一个整数。


输出描述:
输出为一行,N+1个有序排列的整数。
示例1

输入

5
1 6 9 22 30
8

输出

1 6 8 9 22 30
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int n = in.nextInt();
        int[] nums = new int[n + 1];
        for (int i = 0; i < n; i++) {
            nums[i] = in.nextInt();
        }
        int num = in.nextInt();
        nums[n] = num; //把插入数字加到最后
        sort_nums(nums); //然后冒泡排序

        for (int i = 0; i <= n; i++) {
            System.out.print(nums[i] + " ");
        }
    }

    public static void sort_nums(int[] nums) {
        for (int i = 0; i < nums.length - 1; i++) {
            for (int j = 0; j < nums.length - 1; j++) {
                if (nums[j] > nums[j + 1]) {
                    int tmp = nums[j];
                    nums[j] = nums[j + 1];
                    nums[j + 1] = tmp;
                }
            }
        }
    }
}

发表于 2024-08-29 12:22:44 回复(0)
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
     public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String nums = sc.nextLine();
        while (sc.hasNext()){
            ArrayList<Integer> list=new ArrayList<>();
            String s = sc.nextLine();
            String s1 = sc.nextLine();
            String[] split = s.split(" ");
            for (int i = 0; i < split.length; i++) {
                int num = Integer.parseInt(split[i]);
                list.add(num);
            }
            int i = Integer.parseInt(s1);
            list.add(i);

            list.sort(new Comparator<Integer>() {
                @Override
                public int compare(Integer o1, Integer o2) {
                    return o1-o2;
                }
            });

            Iterator<Integer> it = list.iterator();
            while (it.hasNext()){
                Integer next = it.next();
                System.out.print(next+" ");
            }
            
            list.clear();
        }
    }
}

发表于 2023-11-29 16:27:17 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n=in.nextInt();
        int[] arrA=new int[n+1];
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            for(int i=0;i<arrA.length;i++){
                arrA[i]=in.nextInt();
            }
        }
        Arrays.sort(arrA);
        for(int i=0;i<arrA.length;i++){
            System.out.print(arrA[i]+" ");
        }
    }
}

发表于 2022-11-27 15:23:56 回复(0)
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] arr=new int[n+1];
        while(sc.hasNext()){
            for(int i=0;i<n+1;i++)
                arr[i]=sc.nextInt();
        }
        Arrays.sort(arr);
        for(int num:arr) 
            System.out.printf("%d ",num);
    }
}

发表于 2022-08-10 21:54:15 回复(0)
直接把第三行的数和第二行一块输进数组,然后调用冒泡排序输出升序数组,打印
import java.util.*;
public class Main {
    //方法:冒泡排序(从小到大顺序)
    public static int[] maopao1(int[] arr) {
        int temp = 0;
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        return arr;
    }
    //主程序:输入数组,调用冒泡,输出
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n + 1];//直接把第三行的数输入数组进行排序
        for (int i = 0; i < n + 1 ; i++) {
            arr[i] = sc.nextInt();
        }
        maopao1(arr);//调用冒泡后获得有序数组(小到大)
        for (int i = 0; i < n + 1 ; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}


发表于 2022-07-11 15:21:23 回复(0)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()){
            int n = scanner.nextInt();
            //要输入数据的数组
            List<Integer> inputList = new ArrayList<>();
            //插入的一个整数
            int toSortNum = scanner.nextInt();
            //添加插入的整数后且进行排序的数组
            List<Integer> toSortList = new ArrayList<>();
            for(int i = 0;i < n;i++){
                inputList.add(scanner.nextInt());
                toSortList.add(inputList.get(i));
            }
            //前面的输入完毕后,再添加单独插入的这个后,进行排序
            toSortList.add(toSortNum);
            Collections.sort(toSortList);
            //输出
            for(int j = 0;j < toSortList.size();j++){
                System.out.print(toSortList.get(j) + " ");
            }
        }
    }
}

发表于 2022-06-30 11:59:18 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        List<Integer> list=new ArrayList<>();
        int n=sc.nextInt();
        for(int i=0;i<n;i++){
            list.add(sc.nextInt());
        }
        Collections.sort(list);
        list.add(sc.nextInt());
        Collections.sort(list);
       for(int j=0;j<n+1;j++){
           System.out.print(list.get(j)+" ");
       }
    }
}


发表于 2021-10-20 19:36:45 回复(0)
import java.io.*;
public class Main
{
    public static void main(String args[])throws IOException{
        BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
        int n=Integer.parseInt(bf.readLine());
        String str[]=bf.readLine().split(" ");
        int m=Integer.parseInt(bf.readLine());
        int a[]=new int[n];
        for(int i=0;i<n;i++)
            a[i]=Integer.parseInt(str[i]);
        int i;
        for(i=0;i<n;i++)
        {
            if(a[i]<m)
                System.out.print(a[i]+" ");
            else
                break;
        }
        System.out.print(m+" ");
        for(int j=i;j<n;j++)
            System.out.print(a[j]+" ");
    }
}


发表于 2021-04-24 17:22:55 回复(0)
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        int flag=0;
        
        Scanner input=new Scanner(System.in);
        int N=input.nextInt();
        int[] num=new int[N];
        for(int i=0;i<N;i++)num[i]=input.nextInt();
        int insert=input.nextInt();
            if(insert>num[N-1])flag=1;
        for(int i=0;i<N;i++){
            if(insert<=num[i]){
                System.out.print(insert+" ");
                insert=num[N-1]+1;
                i--;
            }else{
                System.out.print(num[i]+" ");
            }
        }
            if(flag==1)
            System.out.print(insert+" ");

    }
}
发表于 2020-11-12 19:46:03 回复(0)


import java.util.Arrays;
import java.util.Scanner;

import sun.security.util.Length;


public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] arr=new int[n+1];
        
        for (int i = 0; i < n; i++) {
            arr[i]=sc.nextInt();
        }
        
        int number=sc.nextInt();   //要插入的数据
        int index=arr.length-1; //用来保存要插入的位置,默认是数组第一个位置

        //1、遍历数组,找到要插入的位置
        for(int i=0;i<n+1;i++){
            if(arr[i]>number){
                index=i;                    //一旦数组元素大于number,说明这个位置就是要插入的位置
                break;                     //记下该位置,退出循环
            }
        }

        //2、将后面的数据向后挪,处理index后面的数据
        for(int i=n;i>index;i--){    //要倒着赋值
            arr[i]=arr[i-1];
        }

        //3、把数据插入到指定位置
        arr[index]=number;

        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }

    }
}

发表于 2020-07-17 21:53:02 回复(0)
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Iterator;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scanner=new Scanner(System.in);
        while(scanner.hasNext()) {
        int len=scanner.nextInt();
        int[] arr=new int[len+1];
       for(int i=0;i<len;i++) {
           arr[i]=scanner.nextInt();
       }
       int item=scanner.nextInt();
       arr[len]=item;
       Arrays.sort(arr);
       for(int i=0;i<arr.length;i++) {
           System.out.print(arr[i]+" ");
       }
        }
    
        
    }
    
    
}
            
    


发表于 2020-06-12 16:33:35 回复(0)
  • 如果用系统自带的排序函数,直接排序就行。
  • 这里是找到插入的位置,进行插入。
    import java.util.*;
    public class Main
    {
      public static void main(String [] args)
      {
          Scanner sc=new Scanner(System.in);
          while(sc.hasNextInt())
          {
              int n=sc.nextInt();
              int [] arr=new int[n];
              for(int i=0;i<n;i++)
              {
                  arr[i]=sc.nextInt();
              }
              int insertNum=sc.nextInt();
              int [] newArr=new int[n+1];
              int insertIndex=n;
              for(int i=0;i<n;i++)
              {
                  if(insertNum<arr[i])
                  {
                      insertIndex=i;
                      break;
                  }   
              }
              for(int i=0;i<n+1;i++)
              {
                  if(i<insertIndex)
                  {
                      newArr[i]=arr[i];
                  }
                  else if(i==insertIndex)
                  {
                      newArr[i]=insertNum;
                  }
                  else
                  {
                      newArr[i]=arr[i-1];
                  }            
              }
              for(int i=0;i<n+1;i++)
              {
                  System.out.print(newArr[i]+" ");
              }
          }  
      }
    }
    

```

发表于 2020-05-06 23:26:54 回复(0)

问题信息

上传者:牛客309119号
难度:
13条回答 2722浏览

热门推荐

通过挑战的用户

查看代码
有序序列插入一个整数