第一种:依次与有序数组中的每个数进行比较,然后找到位置之后,定义一个新的数组,该信数组的长度加一,再使用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;}}}

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

转载于:https://www.cnblogs.com/jiutiankunpeng/p/5386333.html

java如何在一个有序的数组类插入一个数!相关推荐

  1. java数组插入一个数_java如何在一个有序的数组类插入一个数!

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

  2. C语言向有序数组中插入一个数使该数组仍保持有序

    C语言向有序数组中插入一个数使该数组仍保持有序 #include<stdio.h> int main() {     int n,i,j,t,k;     printf("您喜欢 ...

  3. 在一个已经排序好的数组中插入一个数,按原来排序的规律

    思路:一个升序数组,插入一个数,若比最后一个数大,放到a[10]中.其他位置插入统一向后移一个. 注:if中最后加个break. #include<stdio.h> int main() ...

  4. C语言 数组中插入一个数

    题目要求:在一个已按升序排列的数组中插入一个数,插入后,数组仍然按照升序排列,已知升序数组为{1,2,4,6,8,9,12,15,149,156} 第一种方法: 要插入一个数,先随便用一个数去代替它的 ...

  5. 实验报告幻方,数组的排序和向数组中插入某个数

    数学与计算机学院 程序设计 实验报告 年级 11级数电二班 学号2011435058  姓名魏珊珊 成绩______ 专业 电气信息类计算机类 实验地点 主楼402  指导教师 石强实验题目­­学习数 ...

  6. 给定一个排序好的数组,插入一个数,使其仍然有规律不使用排序算法

    给定一个排序好的数组,插入一个数,使其仍然有规律 不使用排序算法 public class test14 { //数组习题public static void main(String[] args) ...

  7. C语言经典例39-在有序数组中插入一个数

    目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. 2 分析 对于一个有序的数组,要插入一个数,并保持依然有序,方法是从 ...

  8. C语言在一个排好序的数组中插入一个数,按序输出。

    #include<stdio.h> void main() { int a[4]={1,4,7}; int t,y; printf("以前数组为"); for(int  ...

  9. 题目标题: 插队(在一个排好序的数组中插入一个数)

    题目描述: 编写程序,对一个已经排好序的数组,输入一个元素.将该元素按原来的排序规则将它插入到数组中.例如原数组为:1 2 6 7 9,输入待插入的元素3,则插入完成后结果为: 1 2 3 6 7 9 ...

最新文章

  1. python全栈学习--day3
  2. LeetCode Algorithm 148. 排序链表
  3. 软件开发了10年,迷茫了
  4. matlab 如何画二维图形,Matlab 学习 画图篇 一 二维图形
  5. get,post请求的编码统一
  6. 2017 码云最火开源项目 TOP 50,你用过哪些?
  7. JTable 的使用
  8. 触摸工业光掩模行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  9. 微服务架构下,大型银行数据库应用实践
  10. .NET Framework 3.5 SP1的图表控件——Chart (转)
  11. JVM系列五:垃圾回收器
  12. java程序员推荐书籍
  13. android 主题是什么,什么是Android中的AppCompat主题?
  14. 概率论与数理统计-课程感悟
  15. 热敏电阻、RTD、热电偶的原理和特性
  16. phalcon mysql_Phalcon 数据库操作总结
  17. IOS13图标尺寸_7大原则,带你设计出更优秀的图标
  18. 基于tkinter制作的一个策略小游戏
  19. 运营商大数据的客源精准吗?
  20. ip camera如何将流媒体信息传送到流媒体服务器,IP Camera远程监控系统的设计与实现...

热门文章

  1. MobileGestalt.h 头文件
  2. VMWare安装DOS系统实现文件共享
  3. 最简单的进制转换函数
  4. android 补间动画有停顿,Android动画原理分析(一)----补间动画
  5. c++ namespace和linux namespace
  6. 9-基数排序C实现(待补充插图)
  7. 1976年,提出公钥密码体制概念的学者
  8. malloc、calloc、realloc和free
  9. 监管大屏系统_餐饮公示大屏广告位招商正式启动!
  10. mysql中case when then 的使用