数组的基本操作(1)
1.数组的扩容:因为数组一旦创建其长度不可变,当我们要添加一个数据的时候如果原数组已满,那么我们需要将其扩容。
原理:
代码:
public static void main(String[] args) {// TODO Auto-generated method stub//定义数组,初始数组int[] arr = new int[] {11,22,33};System.out.println("添加数据前" + Arrays.toString(arr));//要添加的数据int dst = 10;//新建一个数组,长度为原数组长度+1int[] brr = new int[arr.length + 1];//将原数组中的数据全部复制到新数组中for (int i = 0; i < arr.length; i ++) {brr[i] = arr[i];}//将要添加的数据放到数组的最后一位brr[brr.length - 1] = dst;//新数组代替原数组arr = brr;System.out.println("添加数据后" + Arrays.toString(arr));}
结果:
2.数组的插入:
将新元素插入到i,那么必须将i,i+1,i+2,…的值向后移动,空出来i的位置,将其插入;那么就需要考虑是否需要扩容了。
代码:
/*** * @param arr 数组* @param index 要插入位置的下标* @param val 插入的值* @param length 数组中有值子数组的长度*/
public static void arrayAdd(int[] arr, int index, int val, int length) {//判断index是否合法if (index < 0 || index > arr.length) {throw new IndexOutOfBoundsException("您插入的位置不对");}else {//判断数组是否已满if (length == arr.length) {//满了就扩容int[] brr = new int[arr.length * 2];for (int i = 0; i < arr.length; i ++) {brr[i] = arr[i];}arr = brr;}//数据向后移动for (int i = length - 1; i >= index; i --) {arr[i + 1] = arr[i];}//插入新数据arr[index] = val;}System.out.println("插入后:" + Arrays.toString(arr));}
3.数组中元素的删除
代码:
/*** * @param arr 数组* @param index 下标* @param length 数组中有值子数组的长度*/public static void arrayDelete(int[] arr, int index, int length) {if (length == index + 1) {arr[index] = 0;}else {for (int i = index; i < arr.length; i++) {arr[i] = arr[i + 1];}}System.out.println("删除后" + Arrays.toString(arr));}
结果:
4.有序数组的二分法查找
思路:①:从子序列的中间位置mid开始比较。value和mid元素相等,则查找成功;否则根据value大小缩小查询范围,若value较小,则继续在子序列的前半段查找;反之继续在后半段查找;
②:重复①,直到查询成功;当begin和end表示范围无效时,表示查询不成功;
/**** * @param arr* @param value* @return 查询的次数*/public static int binarySearch(int[] arr,int value) {System.out.println("****************使用二分法查找****************");int mid = 0; // 检索的时候int start = 0; //用start和end两个索引控制它的查询范围int end = arr.length;int count = 0;for (int i = 0; i < arr.length; i++){ count++;mid = (start + end) / 2;if(arr.length - 1 == i){System.out.println("抱歉,没有找到");}else if (arr[mid] < value){start = mid;}else if (arr[mid] > value){end = mid;}else{System.out.println(arr[mid] + "找到了,在数组下标为" + mid + "的地方,查找了" + count + "次。");break;}}return count;}
数组的基本操作(1)相关推荐
- php经典操作,php数组的经典操作(遍历数组、基本操作)实例
下面小编就为大家带来一篇PHP数组的基本操作及遍历数组的经典操作实例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 实例如下所示: 索引数组 //数组第一种定义 $ar ...
- python对数组的基本操作_[宜配屋]听图阁
这篇文章主要介绍了简单了解python数组的基本操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一,创建列表 创建一个列表,只要把逗号分隔的不同 ...
- JavaScript学习(九十二)—关联数组的基本操作
JavaScript学习(九十二)-关联数组的基本操作 王同学的每天进步一点点系列!!! 一.关联数组的定义 定义:所谓关联数组,就是指数组元素的下标为字符型 二.关联数组的创建方式 1)定义一个空数 ...
- python 中数组的基本操作
文章目录 前言 一.numpy是什么? 二.使用步骤 1.引入库 2.读入数据 总结 前言 在python中本身有着列表等数据结构,但是列表只是一种数据的存储容器,不具备任何计算能力. 故引入数组的概 ...
- java 数组的基本操作
1 遍历数组 遍历数组就是获取数组中的每个元素,通常遍历数组使用for循环 例如: int [] a ={1,2,3,4};for (int i=0;i<a.length;i++){Syste ...
- python array操作,Python中数组的基本操作
先定义一个数组列表:names = ["alexl", "banana", "candna", "dell", &quo ...
- Scala数组的基本操作,数组进阶操作,多维数组
1.Scala中提供了一种数据结构-数组,其中存储相同类型的元素的固定大小的连续集合.数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合 2 声明数组变量: 要使用的程序的数组 ...
- python对数组的操作_Python对数组的基本操作
# coding=utf-8 ''' Created on 2014-3-29 @author: Administrator ''' ''' 创建并打印数组 ''' arr = ["aex& ...
- JavaScript学习(九十一)—二维数组的基本操作
JavaScript学习(九十一)-二维数组和多维数组总结 王同学的每天进步一点点系列!!! (一).二维数组的定义格式 var 数组名称=[[值1,值2,值3],[值1,值2,值3],[值1,值2, ...
最新文章
- java小编程---生成不重复的随机数列
- 在删除一个指针之后,一定将该指针设置成空指针(即在delete *p之后一定要加上: p=NULL)...
- 利用python爬虫(part3)--正则表达式
- python 条件概率_机器学习中的概率问题
- MySQL的外键约束
- 想学习java,如果学不会java怎么办?
- nginx配置静态资源允许跨域访问
- ajax 传输中文乱码,关于Ajax请求中传输中文乱码问题的解决方案
- VS2010中无法嵌入互操作类型“......”,请改用适用的接口的解决方法
- 扩展BindingList,防止增加、删除项时自动更新界面而不出现“跨线程操作界面控件 corss thread operation”异常...
- Configuration Opennebula3.8 4.x Virtual Machines Contextualizing
- Fluent Python读后感
- 市场调研-全球与中国汽车零部件涂层市场现状及未来发展趋势
- 串口,使用交叉还是直连串口线
- Python基础详解(十三):(视频符号化)将视频转换成ASCII符号形式展示出来
- 撒旦撒旦阿三的撒的撒
- Mac 5年了 清理了一下多出了 70个G
- 虚拟机中输入ifconfig不显示ip地址,如何解决
- Facebook聊单,SaleSmartly有妙招!
- python制作水球图