java基础:有序数组中插入数字使其依然有序案例分析

news2024/9/30 9:21:07

问题目标是将用户输入的整数插入到一个已排序的数组中,以保持数组的有序性。

如何实现? 

思路分析:

  1. 初始化已排序的数组:通过使用int[] arr = {1, 2, 3, 4, 5, 6};语句创建一个已经排好序的数组。
  2. 定义变量:index用于记录插入位置,默认值为-1;arr_new用于存储插入后的新数组。
  3. 输入要插入的整数:通过Scanner类获取用户输入的整数。
  4. 遍历已排序的数组,找到合适的插入位置:使用for循环遍历已排序的数组,如果找到第一个大于等于输入整数的元素,记录其索引,即插入位置。
  5. 如果没有找到合适的插入位置,将整数插入到数组末尾:如果没有找到合适的插入位置,说明输入整数比数组中的所有元素都要大,此时将插入位置设置为数组长度,表示要将整数插入到数组末尾。
  6. 创建新数组并插入整数:根据插入位置,创建一个新的数组arr_new,长度比原数组多1。然后使用两个指针x和y,分别指向新数组和原数组,通过比较索引和插入位置的关系,将元素逐个复制到新数组中,插入位置处插入输入的整数。
  7. 输出新数组:遍历新数组,逐个输出元素。

代码实现:

package idea;

import java.util.Scanner;

public class arr_test {
    public static void main(String[] args) {
//       在有序数组中插入一个数,让数组依然有效
        int[] arr = {1,2,3,4,5,6};
        int index = -1 ;
        int[] arr_new = new int[arr.length+1];
        System.out.println("请输入一个整数");
        Scanner Myscanner = new Scanner(System.in);
        int a = Myscanner.nextInt();
        for (int i = 0 ; i < arr.length;i++){
            if (a <= arr[i]){
                index = i;
                break;
            }
        }
        //  如果数组的数都比插入的数要大,这个数就放在数组最后一位的下一位
//   他的下标索引就是数组的长度
        if (index == -1){
            index = arr.length;
        }
        for (int x=0,y = 0; x < arr_new.length;x++){
            if (x == index){
                //  index为0 插入的数要插在数组第一位
                //不执行else语句
                arr_new[x] = a ;
            }
            else {
                // index>0的时候,插入的数会放在数组里或者数组最后一位的下一位
                //旧数组的数会按顺序放
                arr_new[x]=arr[y];
                y++;
            }
        }
//        打印输出新数组
        for (int b = 0 ; b < arr_new.length;b++){
            System.out.print(arr_new[b]+"\t");
        }
    }
}

 代码运行结果如下:

总结:

  1. 初始化已排序的数组
  2. 定义变量
  3. 输入要插入的整数
  4. 遍历已排序的数组,找到合适的插入位置
  5. 如果没有找到合适的插入位置,将整数插入到数组末尾
  6. 创建新数组并插入整数
  7. 输出新数组

拜拜!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1407237.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年制造业展望

制造业是国民经济的主体&#xff0c;其重要性不言而喻。就2023年而言&#xff0c;制造业在技术创新、数字化转型和可持续发展方面都取得了重要的进展。以下是对于2024年制造业的发展进行的分析与预测。 1 保持业务平衡仍将是一项挑战 在过去的四年里&#xff0c;制造业高管人…

【IEEE会议征稿】2024年第九届智能计算与信号处理国际学术会议(ICSP 2024)

2024年第九届智能计算与信号处理国际学术会议&#xff08;ICSP 2024&#xff09; 2024年第八届智能计算与信号处理国际学术会议&#xff08;ICSP 2024&#xff09;将在西安举行&#xff0c; 会期是2024年4月19-21日&#xff0c; 为期三天, 会议由西安科技大学主办。 欢迎参会&…

Django开发_17_表单类

一、介绍 为了简化前端form表单代码 二、步骤 &#xff08;一&#xff09;创建form.py 创建一个表单类 from django import formsclass RegisterForm(forms.Form):reg_name forms.CharField(max_length10, label用户名)reg_pwd forms.CharField(max_length20, label密码…

【Pandora Next Notebook】

系列文章目录 一是为了说一说这个项目&#xff0c;第二点是为了介绍一下如何使用大善人Cloudflare的功能来配合v0.5.0的新功能。它就是全代理ChatXXX账号注册流程。 文章目录 系列文章目录前言一、[GPT_BOT](https://chat.oaifree.com/)这次借着v0.5.0发布了一个好玩的功能&…

配网故障定位装置:实现高效故障排查的利器

在现代社会&#xff0c;电力系统的稳定运行对于国家经济和民生至关重要。然而&#xff0c;随着电力系统的不断发展&#xff0c;配网故障问题日益严重&#xff0c;给电力系统带来了巨大的安全隐患。为了解决这一问题&#xff0c;恒峰智慧科技研发了一种基于成熟的行波测距技术的…

Vue+OpenLayers7:html原生网页如何使用OpenLayers7地图

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7 前言 尽管现在大部分网页都是使用Vue或者React开发了,但是还是有不少开发者使用的是网页原生html进行开发,或者是老项目维护的需要,所以为了照顾使用html原生网页的同学们,本章简单讲解一下如何使用原始html网页情况下…

1. Matplotlib的Figure基础概念

1. Matplotlib的Figure基础概念 一 **角色和作用**二 **类比&#xff1a;**三 **基本使用示例** Matplotlib是一个用于绘制二维图形的Python库&#xff0c;广泛应用于数据可视化领域。其灵活性和强大的功能使得用户能够轻松创建各种类型的图表&#xff0c;包括折线图、散点图、…

el-select选择之后值不显示在文本框的问题解决

问题场景如下图&#xff1a; 在el-collapse-item中使用子组件&#xff0c;子组件里是el-form-item代码。el-select在for循环中&#xff0c;可以有多个。 查了一下博客&#xff0c;有的说这种场景需要给el-select添加change事件&#xff0c;加上 this.$forceUpdate() 强制刷新即…

Spring Boot 中的外部化配置

Spring Boot 中的外部化配置 一、配置文件基础1.配置文件格式&#xff08;1&#xff09;YAML 基本语法规则&#xff08;2&#xff09;YAML 支持三种数据结构 2.application 文件3.application.properties 配置文件4.application.yml 配置文件5.Environment6.组织多文件7.多环境…

创新医疗服务:宠物在线问诊系统的搭建与应用

随着科技的不断进步&#xff0c;创新的医疗服务方式也日渐成为宠物主人关心爱宠健康的首选。本文将深入介绍如何搭建一套创新的宠物在线问诊系统&#xff0c;并展示其应用的技术代码。 1. 系统架构与技术选择 在开始搭建之前&#xff0c;我们需要设计系统的架构并选择合适的…

码农维权——案例分析之违法解除劳动合同(六)

目录 一、背景 二、案例分析&#xff1a;违法解除劳动合同 A、公司的主张 B、公司的主要证据&#xff08;公司单方面提交的&#xff0c;法院不一定认可采纳&#xff09; C、员工的质证/证据 D、判决结果 E、判决依据 三、写在最后 一、背景 当前互联网行业普遍以”变相…

Vue开始封装全局防抖和节流函数

封装文件 封装文件的实现思路如下&#xff1a; 首先&#xff0c;我们需要定义两个函数&#xff1a;防抖函数和节流函数。这两个函数的目的是为了减少频繁触发某个事件导致的性能问题&#xff1b;防抖函数的实现思路是创建一个计时器变量&#xff0c;用于延迟执行函数。当触发…

c# ADODB.Recordset实例调用Fields报错

代码&#xff1a; using System; using System.CodeDom; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ADODB;namespace ConsoleApp1 {internal class Programre{static ADODB.Recordset recordsetInstance…

trino-435: trino接入TIDB数据源

文章目录 一、TIDB介绍二、TIDB源接入流程三、遇到的错误1、数据源注册:2、查询表数据一、TIDB介绍 二、TIDB源接入流程 三、遇到的错误 1、数据源注册: http://localhost:8080/v1/catalog/register?name=tidb_test {"connector.name":"tidb",&quo…

NodeJs中要注意onClick的函数调用写法

在一个测试页面写简单的测试函数时候&#xff0c;遇到一个页面刷新问题。同一个函数被调用了几次。 const [msg, setMsg] React.useState("");async function updateGoodsQty2() {...setMsg(rsp.message)}async function updateGoodsQty3() {...setMsg(rsp.message)…

Elasticsearch分布式一致性原理剖析(一)-节点篇

前言 “Elasticsearch分布式一致性原理剖析”系列将会对Elasticsearch的分布式一致性原理进行详细的剖析&#xff0c;介绍其实现方式、原理以及其存在的问题等(基于6.2版本)。 ES目前是最流行的分布式搜索引擎系统&#xff0c;其使用Lucene作为单机存储引擎并提供强大的搜索查…

从零开始学Python第02课:第一个Python程序

在上一课中&#xff0c;我们对 Python 语言的过去现在有了一些了解&#xff0c;我们准备好了运行 Python 程序所需要的解释器环境。相信大家已经迫不及待的想开始自己的 Python 编程之旅了&#xff0c;但是新问题来了&#xff0c;我们应该在什么地方书写 Python 程序&#xff0…

Linux:0_Linux 环境搭建

Linux 环境搭建 1. 购买云服务器 2. 下载XShell XShell 是一个远程终端软件. 下载官网 https://www.netsarang.com/products/xsh_overview.html 下载安装的时候选择 “home/school” 则为免费版本. 3. 使用 XShell 登陆主机 XShell 下的复制粘贴 复制: ctrl insert (有些…

智能机器人与旋量代数(12)

Chapt 4. 旋量代数在机器人学中的应用 4.1 串联机器人正运动学的指数积(PoE, Product of Exponetial)公式 4.1.1 回顾&#xff1a;机器人正运动学的Denavit-Hartenberg (D-H)参数公式 D-H 建模法: D-H 建模方法是由 Denavit 和 Hartenberg (ASME, 1955) 提出的一种建模方法&…

【AI视野·今日NLP 自然语言处理论文速览 第七十五期】Thu, 11 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Thu, 11 Jan 2024 Totally 36 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Leveraging Print Debugging to Improve Code Generation in Large Language Models Authors Xueyu Hu, Kun K…