1. 首页
  2. Java基础

033-三十三、数组的常用操作

引言

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

数组的拷贝

数组的拷贝有4中方式

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

如图:
33-三十三、数组的常用操作"

2.System.arraycopy()方法

通过源码可以看到,其为native方法,即原生态方法。自然效率更高。
33-三十三、数组的常用操作"
参数:src – 源数组。srcPos – 源数组中的起始位置。dest – 目标数组。destPos – 目标数据中的起始位置。length – 要复制的数组元素的数量
33-三十三、数组的常用操作"

3.Arrays.copyOf 的用法

同样看源码,它的实现还是基于System.arraycopy(),所以效率自然低System.arraycpoy()
33-三十三、数组的常用操作"
代码演示:
33-三十三、数组的常用操作"

4.Object.clone()方法从源码来看同样也是native方法,但返回为Object类型,所以赋值时将发生强转,所以效率不如之前两种。
33-三十三、数组的常用操作"

代码演示:
33-三十三、数组的常用操作"

数组排列

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

代码演示:
33-三十三、数组的常用操作"

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

  2. 插入排序和打牌一样,拿到一个数和前面已有的数进行对比,比前面的数小就放到前面
    33-三十三、数组的常用操作"

二分查找法

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

基本思想:

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

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

代码如下:
33-三十三、数组的常用操作"

第二种使用递归的方法来实现二分查找如图:
33-三十三、数组的常用操作"

写完了如果写得有什么问题,希望读者能够给小编留言,也可以点击[此处扫下面二维码关注微信公众号](https://www.ycbbs.vip/?p=28 "此处扫下面二维码关注微信公众号")

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「方志朋」,公众号后台回复「666」 免费领取我精心整理的进阶资源教程
  4. JS中文网,Javascriptc中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,是给开发者用的 Hacker News,技术文章由为你筛选出最优质的干货,其中包括:Android、iOS、前端、后端等方面的内容。目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。

    本文著作权归作者所有,如若转载,请注明出处

    转载请注明:文章转载自「 Java极客技术学习 」https://www.javajike.com

    标题:033-三十三、数组的常用操作

    链接:https://www.javajike.com/article/1340.html

« 034-三十四、Java内部类详解
031-三十二、Java之接口详解»

相关推荐

QR code