java 往数组增加一个元素
题目:给定一个有序的数组{13, 15, 19, 28, 33, 45, 78, 106},如果往该数组中存储一个元素,并保证这个数组还是有序的,那么这个元素的存储的角标如何获取?并打印出插入后的数组 packagecom.ljy.interviewQuestion;
/** * 题目:给定一个有序的数组{13, 15, 19, 28, 33, 45, 78, 106},
* 如果往该数组中存储一个元素50,并保证这个数组还是有序的,
* 那么这个元素的存储的角标如何获取?
* 思路:利用二分查找法,将最后返回min值即可。
* 步骤: 1)定义arr,key来存储题目中的值,定义max,min和mid来分别记录二分区间
* 2)使用while循环结构来控制,循环条件为 min <= max,否则返回min * @author liaojianya * 2016-11-16
*/
public class InsertOrderedArr {
public static void main(String[] args) {
int[] arr = newint[] {13, 15, 19, 28, 33, 45, 78, 106};
int key = 50;
int index = getInsertIndex(arr, key);
System.out.println(key + "应该插入到数组的位置下标为: " + index);
int[] arr1 = newint[arr.length + 1];
insertArr(arr, arr1, key, index);
printArr(arr1);
}
//打印数组 privatestaticvoid printArr(int[] arr1) {
System.out.print("插入元素后的数组为: [");
for(int i = 0; i < arr1.length; i++) {
if(i != arr1.length - 1) {
System.out.print(arr1[i] + ", ");
} else {
System.out.println(arr1[i] + "]");
}
}
}
public static int getInsertIndex(int[] arr, int key) {
int min = 0; int max = arr.length - 1; while(min <= max) {
//右移折半
int mid = (min + max) >> 1;
//如果key值比中间值大,则所要插入位置在数组的右半边
if(key > arr[mid]) {
min = mid + 1;
}
//如果key值比中间值小,则所要插入位置在数组的左半边
else if(key < arr[mid]) {
max = mid - 1;
}
//key值和中间值一样大,则直接返回index = mid
else {
return mid;
}
}
//如果下标min > max,则返回min位置即为所要插入的位置 return min; }
/* * 步骤: * 循环遍历arr,如果i < index,则arr1[i] = arr[i];
* 如果i == index,则arr1[i] = key; * 否则,arr1[i] = arr[i-1];
* */
public static void insertArr(int[] arr, int[] arr1, int key, int index) {
for(int i = 0; i < arr1.length; i++) {
if (i < index) {
arr1[i] = arr[i];
} else if(i == index) {
arr1[i] = key;
} else {
arr1[i] = arr[i-1];
}
}
}
}
程序输出:
java 往数组增加一个元素相关推荐
- java替换数组中的元素_如何使用Java 8流快速替换列表中的元素
java替换数组中的元素 假设您有一个项目清单: List<String> books = Arrays.asList("The Holy Cow: The Bovine Tes ...
- android给数组添加新元素_「数组赋值」什么是数组、如何创建数组、数组赋值、数组增加一个新元素 - seo实验室...
数组赋值 一起组团(什么是数组) 我们知道变量用来存储数据,一个变量只能存储一个内容.假设你想存储10个人的姓名或者存储20个人的数学成绩,就需要10个或20个变量来存储,如果需要存储更多数据,那就会 ...
- JAVA删除数组中指定元素
//记得在开头引用Arrays类 import java.util.Arrays; //返回剔除指定元素的数组 public int[] getThree(int[] scores){//剔除不符要求 ...
- html获取数组的前三个元素,web前端:js 获取数组最后一个元素
Javascript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在html(标 ...
- java删除数组中重复元素的方法
java删除数组中重复元素的方法 方法一:for双循环 方法二:利用HashMap,储存元素 方法一:for双循环 1.声明int类型index,该数即可为不重复元素下标,还可统计数组中不重复元素的个 ...
- java删除数组中重复元素的几种方法
Java操控数组,删除数组中所有的重复元素,使其数组元素全部唯一,有以下几种方法: 1,使用set(最好想到),set本身就是不重复的集合: package Array_test;import jav ...
- java删除数组中重复元素
id="BAIDU_DUP_fp_iframe" src="https://pos.baidu.com/wh/o.htm?ltr="> > src= ...
- 什么是数组、如何创建数组、数组赋值、数组增加一个新元素
一起组团(什么是数组) 我们知道变量用来存储数据,一个变量只能存储一个内容.假设你想存储10个人的姓名或者存储20个人的数学成绩,就需要10个或20个变量来存储,如果需要存储更多数据,那就会变的更麻烦 ...
- java从数组中删除元素(数组的缩容)
java从数组中删除元素(数组的缩容) 1,解决方案一 /* * 数组的缩容(删除元素) * 第一种解决方案 * 移动元素,被删除元素后面的元素往前移一位 * 优点:不需要创建新数组,省内存,速度快 ...
最新文章
- 【Java】阶乘 素数 循环
- 神经尘埃、脑波打字…… 2018年的脑科学要研究什么?
- 利用TensorFlow2.0为胆固醇、血脂、血压数据构建时序深度学习模型(python完整源代码)
- 9.LDA(线性判别分析)
- 关于iOS沙盒的目录结构和获取
- bootstrap源码之滚动监听组件scrollspy.js详解
- Python学习笔记:爬取网页图片
- Exchange server 2007中启用pop3和IMAP4协议访问
- P3399 丝绸之路(线性二维dp)
- 敏捷开发免费管理工具——火星人预览之七:自定义字段
- java通信方式_java 认知底层的五种通信方式
- [转载] Python time sleep()方法如何使用?
- js可以控制文件上传的速度吗?
- 二叉树 先序遍历 中序遍历 后续遍历 java实现
- 应用回归分析第五版电子书_应用回归分析 R语言版_何晓群著_2017年
- 为什么除法,开方,求对数比乘法,乘方,求指数更难
- Creator 3.0中摄像机调整技巧: 1.旋转:Cmd+右键 移动:空格+右键 放缩:滚轮
- Python使用for实现无限循环的多种方法
- Windows软件清单
- R以及RStudio的获取和使用
热门文章
- 存储卡的相关标准.CF.SD.SDHC.MMC.TF
- 什么软件可以测试家里的宽带,技术贴 | 如何简单又专业的测试自己家的网速是否达标...
- PS技巧一-----镜头光晕
- 【单片机仿真项目】LED 闪烁灯(proteus原理图+keil代码)
- 互联网人群画像和你所不知道的真相
- SCI、EI和IEEE有什么区别
- Linux iio驱动学习
- [艾兰岛]制作传送门之boss技能——kura酱长期更新
- burpsuit无法成功代理之导入证书
- allergro音乐术语什么意思_常见音乐术语(速度术语)