首页 > 编程语言 >Java入门_一维数组_第一题_升序数组

Java入门_一维数组_第一题_升序数组

时间:2023-03-21 11:37:43浏览次数:49  
标签:index arr Java int 数组 arrNew 升序

声明

咱是个新手,没啥技术只会最基础的,见谅哈。
更简化的方法还请大佬指教。

题目:

已知有个升序数组的数组,要插入一个元素,该数组顺序依然是升序。
例如:{ 25 , 49 , 74 , 99 },添加‘ 77 ’后,数组为{ 25 , 49 , 74 , 77 , 99 }。

思路:

  1. 建立第一个数组,输入升序的数值。
  2. 建立索引,确立要添加的数值位置。
  3. 创建第二个数组,将数据拷贝一份随即插入要添加的数组。
  4. 销毁第一个数组,节约空间(说实话我感觉应该不缺这点空间吧嘿嘿)。最后遍历一遍并输出添加完的数组。

初始代码如下:

具体细节在代码中都有备注。

import java.util.Scanner;
public class twoArr {
    public static void main(String[]args){
        int index = -1;//创建索引
        int []arr = new int[]{ 25 , 49 , 74 , 99 };
        int []arrNew = new int[arr.length + 1];
        Scanner myScanner = new Scanner(System.in);
        System.out.println("请输入你所喜欢的整数");
        if (myScanner.hasNextInt()){//判断输入的值是否为整数类型
            int add = myScanner.nextInt();
            for (int i = 0;i < arr.length;i++){//确定索引的位置
                if (arr[i] >= add){//用 >= 是因为可能出现数值相同的情况
                    index = i;
                    break;//确定新增数值位置,跳出循环。
                }
            }
            if (index == -1){//比较到最后依然没找到说明新增数值是最大值,于是索引的值是数组长度
                index = arr.length;
            }
            for (int i = 0,j = 0;i < arrNew.length;i++){ //i 遍历arrNew数组,j 遍历arr数组
                if (index != i){
                    arrNew[i] = arr[j];
                    j++;
                }else{
                    arrNew[i] = add;
                }
            }
            arr = arrNew;//销毁第一个数组,可以吧arrNew看做这个数组的地址,arr数组地址边变为arrNew一样后,原地址空间就被销毁了
            for (int i= 0; i < arrNew.length;i++){
                System.out.print(arrNew[i] + "\t");
            }
        }else{
            System.out.println("你输入错误,这不是整数");
        }
    }
}

日常欣赏,课后娱乐(哥们是真心喜欢啊)

标签:index,arr,Java,int,数组,arrNew,升序
From: https://www.cnblogs.com/lbdmj-zsa/p/17228158.html

相关文章

  • java.io.IOException: Packet len1213486160 is out of range!
    部署otter,启动node的时候一直报错:2023-03-2110:39:24.615[main-SendThread(10.224.250.251:8080)]WARNorg.apache.zookeeper.ClientCnxn-Session0x0forserver......
  • java发送验证码
    导入maven包(commons-email)<dependency><groupId>org.apache.commons</groupId><artifactId>commons-email</artifactId><version>1.5</version></......
  • Java 获取最近12个月数据,包含当月数据
    List<String>dateList=newArrayList<>();Calendarcalendar=Calendar.getInstance();//月份最大为11最小为0所以设置初始月份时加1,需要获取到当前月份所以设置......
  • 合并链表-leetcode23-合并k个升序链表
    给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例1:输入:lists=[[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6......
  • javaSE-day12(多线程)
    1.多线程的常用方法Thread提供了很多与线程操作相关的方法方法:publicvoidrun():线程的任务方法publicvoidstart():启动线程publicStringgetName():获取当前......
  • javascript 给Object扩展extend方法
    javascript给Object扩展extend方法mdj280759843于2011-04-1213:16:46发布1006收藏分类专栏:JS文章标签:JavaScriptjQueryUIprototype框架ViewUI版权JS专栏......
  • php数组,输入一个值,并返回比他小的值
    functionfindClosestSmallerValue($array,$inputValue){$minDifference=PHP_INT_MAX;$closestValue=null;foreach($arraya......
  • 剑指 Offer 07. 重建二叉树(java解题)
    目录1.题目2.解题思路个人思路3.数据类型功能函数总结4.java代码1.题目输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍......
  • Java之JasyptUtil类的使用
    在配置文件中,我们通常会对中间件密码进行加密。手动加密可以使用JasyptUtil类,代码如下:packagecom.cmit.kapok.system.utils;importorg.jasypt.encryption.pbe.Standa......
  • Java生成随机日期
    publicclassDateRandomTest{//返回2007-01-01到2007-03-01的一个随机日期publicstaticvoidmain(String[]args){DaterandomDate=r......