前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数组的常用操作

数组的常用操作

作者头像
用户5224393
发布2019-08-20 16:21:37
4270
发布2019-08-20 16:21:37
举报
文章被收录于专栏:Java研发军团Java研发军团

引言

由于在数组的16节写掉了一节,在这里补上数组的拷贝,冒泡排序,二分法查找。

数组的拷贝

数组的拷贝有4中方式

1.for循环方法: 代码灵活,但效率低。就是用一个for循环进行元素的逐个拷贝,进行深拷贝或者浅复制这个大家可以自己把握。

如图:

2.System.arraycopy()方法

通过源码可以看到,其为native方法,即原生态方法。自然效率更高。

参数:src - 源数组。srcPos - 源数组中的起始位置。dest - 目标数组。destPos - 目标数据中的起始位置。length - 要复制的数组元素的数量

3.Arrays.copyOf 的用法

同样看源码,它的实现还是基于System.arraycopy(),所以效率自然低System.arraycpoy()。

代码演示:

4.Object.clone()方法从源码来看同样也是native方法,但返回为Object类型,所以赋值时将发生强转,所以效率不如之前两种。

代码演示:

数组排列

1. 直接排序,双重for循环,数组的第一个数a[0]和后面所有的数进行比对,得到最小的数,然后第二个数a[1]和后面所有的数进行比对,得到次小的数。。。反复后得到排序后的结果。

代码演示:

2. 冒泡排序是两两之间进行对比,这样最大的一个数就到了数组的最后,第二次进行比对的时候只要比数组长度-2次,就是<arr.length-1,即可得到次大的数,放在倒数第二的位置,如此反复得到排序后的数组。

3. 插入排序和打牌一样,拿到一个数和前面已有的数进行对比,比前面的数小就放到前面

二分查找法

当数据量很大适宜采用该方法。采用二分法查找时,数据需是有序不重复的。

基本思想:

假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功;若 x 小于当前位置值,则在数列的前半段中查找;若 x 大于当前位置值则在数列的后半段中继续查找,直到找到为止。

假设有一个数组 { 12, 23, 34, 45, 56, 67, 77, 89, 90 },现要求采用二分法找出指定的数值并将其在数组的索引返回,如果没有找到则返回 -1。

代码如下:

第二种使用递归的方法来实现二分查找如图:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java研发军团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 数组的拷贝
  • 数组排列
  • 二分查找法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档