第一种:依次与有序数组中的每个数进行比较,然后找到位置之后,定义一个新的数组,该信数组的长度加一,再使用system.arraycopy将于数组copy到新数组!import java.util.Arrays;

import java.util.Scanner;

 public class Sort {
  public static void main(String[] args) {
  Scanner in = new Scanner(System.in);
  int nums[] = new int[10];
  System.out.println("请输入一组数字(不超过10个数字):");
  for(int i =0 ;i<nums.length;i++){
  int j = in.nextInt();
  nums[i]=j;}
  bubblesort(nums);
  Output(nums);
  System.out.println("请从键盘输入一个数!");
  int a = in.nextInt();
  nums=insert(a,nums);
  System.out.println("插入数字之后的排序为:");
  Output(nums);
}
public static void bubblesort(int [] nums) {//对数组进行冒泡排序
  for(int i =0;i<nums.length-1;i++){
  for(int j=0;j<nums.length-1-i;j++){
  if(nums[j]>nums[j+1])
    {
      int temp = nums[j];
      nums[j] =nums[j+1];
      nums[j+1]=temp;
    }
  }
 }
} public static int[] insert(int a,int [] nums){//进行插入操作
  int index = 0;
  for(int i = 0;i<nums.length;++i){
  if(a>=nums[i]){
  index++;}
  }
  int[] newArray = new int[nums.length + 1];
  newArray[index] = a ;
  System.arraycopy(nums, 0, newArray, 0 , index );
  System.arraycopy(nums, index, newArray, index + 1 , nums.length - index);
  return newArray ; //返回新数组
}
public static void Output(int [] nums){
  for(int j = 0;j<nums.length;j++){
  System.out.print(nums[j]+" ");   }
  System.out.println();
  } }

  

第二种方法:只是查找时略有不同,是用的是二分查找的思想:

import java.util.Arrays;

public class BinaryInsert {

    public static void main(String[] args) {

        BinaryInsert bt = new BinaryInsert();

        int[] array = new int[]{1 , 3 , 6 , 8, 30 , 49 , 60 , 70 , 83 , 85};

        System.out.println(Arrays.toString(array));

        array =    bt.insert(array , 50);

        System.out.println(Arrays.toString(array));

    }

    public int[] insert(int[] sortArray , int value){
int index = findInsertIndex(sortArray , value , 0 , sortArray.length); //找到插入位置
int[] newArray = new int[sortArray.length + 1];
newArray[index] = value ;
System.arraycopy(sortArray, 0, newArray, 0 , index );
System.arraycopy(sortArray, index, newArray, index + 1 , sortArray.length - index);
return newArray ; //返回新数组
} //找到value适合插入的位置
public int findInsertIndex(int[] sortArray , int value , int left , int right){
int middleIndex = (right - left) / 2 + left ;
int middleValue = sortArray[middleIndex] ;
if(right - left < 2){
if(value > sortArray[right -1 ])
return right;
else if(value > sortArray[left]){
return left + 1;
}else{
return left;
}
}else if(middleValue < value){
return findInsertIndex(sortArray , value , middleIndex + 1 , right);
}else if(middleValue > value){
return findInsertIndex(sortArray , value , left , middleIndex );
}else{
return middleIndex + 1;
}
} }

  注意与顺序表中个的插入数组进行区别,因为数组的长度是固定的,无法像顺序表那样依次移动元素进行操作!否则会产生数组越界错误!

java如何在一个有序的数组类插入一个数!的更多相关文章

  1. 【C语言】在有序数组中插入一个数,保证它依然有序

    #include<stdio.h> int main() { ] = { ,,,,,, }; int key, i, j; printf("请输入一个数\n"); sc ...

  2. Problem F: 零起点学算法85——数组中插入一个数

    #include<stdio.h> int main() { ],b[]; while(scanf("%d",&n)!=EOF) { ;i<n;i++) ...

  3. java 在数组{1,2,3,4,6,7,8,9,10}中插入一个数5,使其插入完成后仍然有序

    1.需要实现的效果 2.代码实现 import java.util.Scanner; /* * 11.在数组{1,2,3,4,6,7,9,8,10}中插入一个数5, * 使其插入完成后仍然有序,运行结 ...

  4. java基础37 集合框架工具类Collections和数组操作工具类Arrays

    一.集合框架工具类:Collections 1.1.Collections类的特点 该工具类中所有的方法都是静态的 1.2.Collections类的常用方法 binarySearch(List< ...

  5. 【java集合总结】-- 数组总结+自己封装数组类

    一.前言 本篇文章总结目前学习的有关数组方面的知识,首先总结一下数组相关的核心概念,然后在封装一个自己的泛型动态数组类(ava已经封装的有现成的,自己封装只是为了加深理解),最后再学习解析下Array ...

  6. 【数据结构与算法】Java制作一个简单数组类

    bobo老师的玩转算法系列–玩转数据结构 简单记录 文章目录 不要小瞧数组 - 制作一个数组类 1 .使用Java中的数组 数组基础 简单使用 2.二次封装属于我们自己的数组 数组基础 制作属于我们自 ...

  7. Java中数组的插入,删除,扩张

    Java中数组是不可变的,但是可以通过本地的arraycop来进行数组的插入,删除,扩张.实际上数组是没变的,只是把原来的数组拷贝到了另一个数组,看起来像是改变了. 语法: System.arrayc ...

  8. 《剑指Offer》第1题(Java实现):在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

    一.题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该 ...

  9. java面向对象的有序数组和无序数组的比较

    package aa; class Array{ //定义一个有序数组 private long[] a; //定义数组长度 private int nElems; //构造函数初始化 public ...

随机推荐

  1. Servlet Examples

    Servlet Examples Servlet Examples 1.Hello World output: code: 1.import java.io.*;2.import javax.serv ...

  2. tar.xz 文件如何解压

    XZ压缩最新压缩率之王 xz这个压缩可能很多都很陌生,不过您可知道xz是绝大数linux默认就带的一个压缩工具. 之前xz使用一直很少,所以几乎没有什么提起. 我是在下载phpmyadmin的时候看到 ...

  3. nginx请求体读取(二)

    2,丢弃请求体 一个模块想要主动的丢弃客户端发过的请求体,可以调用nginx核心提供的ngx_http_discard_request_body()接口,主动丢弃的原因可能有很多种,如模块的业务逻辑压 ...

  4. 使用AES加密的帮助类

    在开发中经常使用加密/解密对一些内容进行处理,比如密码在存入数据库之前先经过加密处理等等,这里就把一个加密帮助类代码贴出来,供以后查找使用. 这个帮助类主要功能是对字符串和字节数组进行加密解密处理. ...

  5. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...

  6. 深入理解事件(event)与委托(delegate)

    好久没学.NET了,最近重又开始学习,发现委托有很多变化了,发现事件不明白了(可能以前就没明白过) 网上搜索了几篇文章,也没注意什么时候的,发现都讲的不彻底,综合一下,也当个学习笔记. using S ...

  7. Geoserver基本使用、WMS服务发布与OpenLayers测试

    1.Geoserver与OpenLayers的下载 Geoserver:http://geoserver.org/ OpenLayers:http://openlayers.org/ 2.安装部署Ge ...

  8. JIRA官方:JIRA报表与分析

    访问重要的问题 JIRA系统内置的过滤器可以使你快速访问最重要的问题.通过保存和收藏自定义的过滤器,你可以随时了解项目和团队的优先级. 保持团队同步 创建一个过滤器,可以保存你的任何搜索条件.通过分享 ...

  9. make的命令行选项

    make的命令行选项 -b -m 忽略,提供其它版本make兼容性. -B --always-make 强制重建所有规则的目标,不根据规则的依赖描述决定是否重建目标文件. -C DIR --direc ...

  10. 3、使用Lucene实现千度搜索

    1.新建Web项目 新建一个Web项目,我命名为SearchEngine,然后导入Java包: 除了上篇博客中的Jar包外,我还引入了 IKAnalyzer2012_FF.jar 包和struts2的 ...