学习记录—— java 插入数字

这篇博客记录了一次解决已排序数组中插入数字的问题。博主探讨了如何按原排序规律插入一个数,指出该问题类似于直接插入排序的一个循环。文章提到在实际操作中,由于原数组大小不变,需要创建新数组,并在插入方法中注意判断条件,当循环变量i为0时,表明新数应插入到数组最前。
摘要由CSDN通过智能技术生成

题目

有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组

这个就是直接插入排序的一次循环 吧

以下

import java.util.Scanner;
public class Problem30 {
    public static int[] insert(int[]arr ,int n,int x ){
        //创建一个临时数组,大小为n+1,并且将要插入的数x放至数组最后
        int[] tempArray = new int [n+1];
        tempArray[n]=x;
        for (int i = 0; i <n ; i++) {
            tempArray[i]=arr[i];
        }
        //寻找插入位置
        for (int i = n-1 ; i >=0 ; i--) {

            if(tempArray[i]>x){
                tempArray[i+1]=tempArray[i];
                //当i循环至0时,说明所有数都大于x,则将x插入tempArray[0]的位置上
                if(i==0) {
                    tempArray[i]=x;
                    break;
                }
            }else {
                tempArray[i+1] = x;
                break;
            }

        }
        return tempArray;
    }


    public static void main(String[] args) {
        //一个有序的数组arr,n表示数组大小
        int[] arr ={34,52,64,69,74,88,92,94,96,103};
        int n = arr.length;    // n为数组大小
        //用Scanner读一个数x
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个要插入的数");
        int x = scan.nextInt();
        scan.close();
        //传入数组、数组大小、要插入的数
        int[]c=insert(arr,n,x);
        for (int i = 0; i <c.length ; i++) {
            System.out.print(c[i]+" ");
        }


    }
}

结果如下:
在这里插入图片描述在这里插入图片描述
这个想了比较久,在创建临时数组那里,原本想用一个叫Arrays.copyOf()的方法,但是最后发现原来的数组大小并不会发生改变 = = 最后还是新创建一个大小比原数组大小多1的数组。

还有一个问题就是在insert()方法里,i循环到0了,表示x已经比任何数都小了,那么插入要放到第一个if语句里……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值