Java例题_30 在已经排好序的数组中插入值
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 在已经排好序的数组中插入值的更多相关文章
- 如何快速找到排好序的数组中最先不连续的数字N
现在有一大堆自然数组成的小到大数组arr,其中会有123456910 这样就要找到6(最先不连续的数字) 举例:[12356789] 找到3 [012345678] 找到8 第一种:遍历数组判断是否 ...
- 排好序的数组中,找出两数之和为m的所有组合
public static void main(String[] args) { int[] a = {1,2,2,3,3,4,5,6}; int m = 6; normal(a, m); } //正 ...
- 设子数组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)的辅助 ...
- 【Java】 剑指offer(53-1) 数字在排序数组中出现的次数
正文 本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 统计一个数字在排序数组中出现的次数.例如输入排序数组{1, ...
- Java构造二叉树、树形结构先序遍历、中序遍历、后序遍历
package com.example.demo; public class BTree { public int data; public BTree left; public BTree rigt ...
- java 数组中插入新的元素
class Demo1 { public static void main(String[] args) { /* 5. 有如下歌曲数组 String[] musics = new String[]{ ...
- Js有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
<!DOCTYPE html> <title>Title</title> <script> var arr = [1,2,3,4,11]; var s ...
- 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; ...
- 一个排好序的数组,找出两数之和为x的所有组合【双指针】
#include <bits/stdc++.h> using namespace std; const int N = 1e6,INF = 0x3f3f3f3f; int a[N]; in ...
随机推荐
- set CSS style in js solutions All In One
set CSS style in js solutions All In One css in js set each style property separately See the Pen se ...
- shit api & shit antd
shit api & shit antd 代码演示 ??? https://ant.design/components/skeleton-cn/ https://github.com/ant- ...
- CSS Architecture & CSS Design Patterns
CSS Architecture & CSS Design Patterns BEM Block, Element, Modifier https://en.bem.info/methodol ...
- Google can't be accessed again, today is shit day
Google can't be accessed again, today is shit day 2019.11.28 12:00~20:56 holy shit (pile of poop) Go ...
- 「NGK每日快讯」12.1日NGK公链第28期官方快讯!
- 「NGK每日快讯」11.25日NGK公链第23期官方快讯!
- [Python学习笔记]组织文件
shutil 模块 shutil 模块可以让我们很方便的在Python程序中复制.移动.改名和删除文件. 复制文件和文件夹 使用shutil.copy()来复制文件,该函数含两个参数,均为字符串格式的 ...
- TERSUS无代码开发(笔记06)-简单实例手机端页面设计
手机端的设计 1.页面说明 2.默认页面===>提交请假单(上面页面双击进入,页面主要编辑区) 2.1默认页面===>提交请假单===>头部区(页面部份主要编辑区01) 2.1.1默 ...
- 又长又细,万字长文带你解读Redisson分布式锁的源码
前言 上一篇文章写了Redis分布式锁的原理和缺陷,觉得有些不过瘾,只是简单的介绍了下Redisson这个框架,具体的原理什么的还没说过呢.趁年前项目忙的差不多了,反正闲着也是闲着,不如把Rediss ...
- Java 8 中Sort排序原理:
总的来说,java中Arrays.sort使用了两种排序方法,快速排序和优化的合并排序.Collections.sort方法底层就是调用的Arrays.sort方法. 快速排序主要是对那些基本类型数据 ...