1 /*30 【程序 30 插入数字】
2 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
3 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的
4 数,依次后移一个位置。
5 */
6
7 /*分析
8 * 1、有一个从小到大排列好的数组,如:1,3,5,7,9,11,13,15,17,19,21;(共11个数,插入就12个了)
9 * 2、插入一个数(如10或者22);
10 * 3、(1)22的话,因为大于最后一个数,所有直接排在最后
11 * (2)10的话,因为要插入数组中,所有要移动11,13.。。等后面的数
12 * 4、难度就在怎么确定插入的位置,然后移动后腾出位置了才能插入======利用for循环,挨个遍历,找到a[i]<=x<=a[i+1]的地方,
13 * 然后用t作为中间变量来移动
14 * */
15
16 /*【注】
17 * 数组扩充 array = Arrays.copyOf(array, array.length + 1);// 数组扩容
18 * */
19
20
21 package homework;
22
23 import java.util.Arrays;
24 import java.util.Scanner;
25
26 public class _30 {
27
28 public static void main(String[] args) {
29 // 声明一个大小为12的整数型数组
30 int[] a={1,3,5,7,9,11,13,15,17,19,21};
31 //输入要插入的数
32 System.out.println("请输入要插入的整数:");
33 int x=new Scanner(System.in).nextInt();
34
35 //数组扩充===比较关键
36 a = Arrays.copyOf(a,a.length+1);
37 //声明一个整型表示数组长度
38 int length=a.length;
39
40 //比较要插入的数是否大于数组的最后一个数
41 // System.out.println(a[a.length-1]);
42 if(x>a[length-2]) { //x大于最后一个数
43 a[length-1]=x;
44 }
45 else { //x小于最后一个数
46 //声明一个location来存放找到的位置的数组下标
47 int location = 0;
48 //遍历数组,找到应该插入的位置
49 for (int i = 0; i < a.length; i++) {
50 if((a[i]<=x)&(a[i+1]>=x)) {
51 location=i+1; //找到这个位置的前一个数后,要插入到其中间,所有这里加1
52 break;
53 }
54 }
55 // //测试
56 // System.out.println(location);
57
58 //开始移动数据
59 for (int i = length; i > location; i--) {
60 a[i-1]=a[i-2];
61 }
62 a[location]=x;
63 }
64 //输出数组
65 for (int i = 0; i < a.length; i++) {
66 System.out.print(a[i]+" ");
67 }
68
69
70 }
71
72 }

Java例题_30 在已经排好序的数组中插入值的更多相关文章

  1. 如何快速找到排好序的数组中最先不连续的数字N

    现在有一大堆自然数组成的小到大数组arr,其中会有123456910  这样就要找到6(最先不连续的数字) 举例:[12356789] 找到3 [012345678] 找到8 第一种:遍历数组判断是否 ...

  2. 排好序的数组中,找出两数之和为m的所有组合

    public static void main(String[] args) { int[] a = {1,2,2,3,3,4,5,6}; int m = 6; normal(a, m); } //正 ...

  3. 设子数组A[0:k]和A[k+1:N-1]已排好序(0≤K≤N-1)。试设计一个合并这2个子数组为排好序的数组A[0:N-1]的算法。

    设子数组A[0:k]和A[k+1:N-1]已排好序(0≤K≤N-1).试设计一个合并这2个子数组为排好序的数组A[0:N-1]的算法.要求算法在最坏情况下所用的计算时间为O(N),只用到O(1)的辅助 ...

  4. 【Java】 剑指offer(53-1) 数字在排序数组中出现的次数

    正文 本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 统计一个数字在排序数组中出现的次数.例如输入排序数组{1, ...

  5. Java构造二叉树、树形结构先序遍历、中序遍历、后序遍历

    package com.example.demo; public class BTree { public int data; public BTree left; public BTree rigt ...

  6. java 数组中插入新的元素

    class Demo1 { public static void main(String[] args) { /* 5. 有如下歌曲数组 String[] musics = new String[]{ ...

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

    <!DOCTYPE html> <title>Title</title> <script> var arr = [1,2,3,4,11]; var s ...

  8. java 将一个数组中的值按逆序重新存放,例如,原来顺序为:9,5,7,4,8,要求改为:8,4,7, 5,9。

    public class Test3 { public static void main(String[] args) { int[] grade = {87,88,89,98,78}; int m; ...

  9. 一个排好序的数组,找出两数之和为x的所有组合【双指针】

    #include <bits/stdc++.h> using namespace std; const int N = 1e6,INF = 0x3f3f3f3f; int a[N]; in ...

随机推荐

  1. Chrome Enhanced Protection

    Chrome Enhanced Protection chrome://settings/security?q=enhanced 站内外链跳转拦截 refs xgqfrms 2012-2020 www ...

  2. Python Learning Paths

    Python Learning Paths Python Expert Python in Action Syntax Python objects Scalar types Operators St ...

  3. js replace all & replaceAll

    js replace all & replaceAll https://scotch.io/tutorials/javascript-replace-all-instances-of-a-st ...

  4. React 函数式组件的 Ref 和子组件访问(useImperativeHandle)

    引入:如何调用函数式组件内部的方法 对于 React 中需要强制修改子组件的情况,React 提供了 Refs 这种解决办法,使得我们可以操作底层 DOM 元素或者自定的 class 组件实例.除此之 ...

  5. 鸿蒙js开发7 鸿蒙分组列表和弹出menu菜单

    鸿蒙入门指南,小白速来!从萌新到高手,怎样快速掌握鸿蒙开发?[课程入口]目录:1.鸿蒙视图效果2.js业务数据和事件3.页面视图代码4.跳转页面后的视图层5.js业务逻辑部分6.<鸿蒙js开发& ...

  6. Linux下搭建RocketMQ环境

    Apache 官网: http://rocketmq.apache.org/ RocketMQ 的 Github 地址: English:https://github.com/apache/rocke ...

  7. Win网络安全审计

    目录 Win进程通信 netstat -nb TCPView 审计登陆历史 security日志 WinLogOnView Win进程通信 netstat -nb 用这个命令就能看到进程和外部的IP连 ...

  8. 31Si2CrMoB

    转: 31Si2CrMoB 31Si2CrMoB是推土机用钢的一种耐磨钢:此钢有很高的强度和韧度,适合于推土机XX.31Si2CrMoB冶炼技术工艺:电弧炉冶炼,初轧开坯.钢板轧制:可√189-170 ...

  9. (三)String、StringBuilder、StringBuffer在字符串操作中的性能差异浅析

    参考资料:https://www.iteye.com/blog/hank4ever-581463 <Core Java Volume I-Fundamentals>原书第十版 <Ja ...

  10. python+unittest+ddt数据驱动进行接口自动化测试

    所谓数据驱动测试,简单的理解为数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变.通过使用数据驱动测试的方法,可以在需要验证多组数据测试场景中,使用外部数据源实现对输入输出与期望值的参数化,避 ...