Java从入门到精通笔记篇(四)

数组

数组是具有相同数据类型的一组数据的集合。

一维数组

创建一维数组

先声明,再用new关键字进行内存分配

单个“[ ]”表示要创建的数组是一个一维数组。使用new关键字为数组分配内存时,整型数组中各个元素的初始值都为0。

初始化一维数组

数组与基本数据类型一样可以进行初始化操作。数组的初始化可分别初始化数组中的每个元素。

二维数组

二维数组常用于表示表,表中的信息以行和列的形式被组织,第一个下标代表元素所在的行,第二个下标代表元素所在的列。

同一维数组一样,二维数组在声明时也没有分配内存空间,同样要使用new关键字来分配内存,然后才可以访问每个元素。

初始化二维数组

对于整型二维数组,创建成功之后系统会给数组中每个元素赋予初始值0。

数组的基本操作

java.util包的Arrays类中包含了用来操作数组(如排序和搜索)的各种方法。

import java.util.Arrays;
遍历数组

遍历数组都是使用for循环来实现的,遍历二维数组需使用双层for循环,通过数组的length属性可获得数组的长度。

填充替换数组元素

fill(int[] a,int value) eg: Arrays.fill(arr, 8)

fill(int[] a,int fromIndex,int toIndex,int value)

该方法将指定的int值分配给int型数组指定范围中的每个元素。填充的范围从索引fromIndex(包括)一直到索引toIndex(不包括)。如果fromIndex == toIndex,则填充范围为空。

如果指定的索引位置大于或等于要进行填充的数组的长度,则会报出ArrayIndexOutOf-BoundsException(数组越界异常)

对数组进行排序

Arrays.sort(object) eg:Arrays.sort(arr)

Java中的String类型数组的排序算法是根据字典编排顺序排序的,因此数字排在字母前面,大写字母排在小写字母前面。

复制数组

copyOf()方法是复制数组至指定长度,copyOfRange()方法则将指定数组的指定长度复制到一个新数组中。

copyOf()方法

copyOf(arr,int newlength)

如果新数组的长度大于数组arr的长度,则用0填充(根据复制数组的类型来决定填充的值,整型数组用0填充,char型数组则使用null来填充);如果新数组长度小于数组arr的长度,则会从数组arr的第一个元素开始截取至满足新数组长度为止。

copyOfRange()方法

copyOfRange(arr, int fromIndex, int toIndex)

查询数组

Arrays类的binarySearch()方法,可使用二分搜索法来搜索指定数组,以获得指定对象。该方法返回要搜索元素的索引值。

binarySearch(Object[] a, Object key)

在调用binarySearch(Object[] a, Object key)之前对数组进行排序(通过sort()方法)。如果没有对数组进行排序,则结果是不确定的。如果数组包含多个带有指定值的元素,则无法保证找到的是哪一个。

binarySearch(Object[],a,int fromIndex,int toIndex,Object key)

在使用该方法前,同样要对数组进行排序,这样才能获得准确的索引值。如果要搜索的元素key在指定的范围内,则返回搜索键的索引;否则返回-1或“-”(插入点)。如果范围中的所有元素都小于指定的键,则插入点为toIndex(注意,这保证了当且仅当此键被找到时,返回的值将大于或等于0)。

如果指定的范围大于或等于数组的长度,则会报出ArrayIndexOutOfBoundsException异常。

数组排序算法

冒泡排序

排序数组元素的过程总是将较小的数往前放、较大的数往后放,类似水中气泡往上升的动作,因此称为冒泡排序。

基本思想是对比相邻的元素值,如果满足条件,就交换元素值,把较小的元素移动到数组前面,把较大的元素移动到数组后面(也就是交换两个元素的位置)。

冒泡算法由双层循环实现,其中外层循环用于控制排序轮数,一般为要排序的数组长度减1次。而内层循环主要用于对比数组中每个邻近元素的大小,以确定是否交换位置,对比和交换次数随排序轮数而减少。


直接选择排序

直接选择排序的基本思想是将指定排序位置元素与其他数组元素分别对比,如果满足条件就交换元素值。注意不是交换相邻元素,而是把满足条件的元素与指定的排序位置元素进行交换。

每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序地放在已排好序的数列的最后,直到全部待排序的数据元素被排完。

反转排序

反转排序就是以相反的顺序把原有数组的内容进行重新排序。其实现思路就是将数组最后一个元素与第一个元素进行替换,将倒数第二个元素与第二个元素进行替换,以此类推,直到将所有数组元素进行反转替换。

反转排序是对数组两边的元素进行替换,因此for循环只需要循环数组长度的半数次,如数组长度为7,那么for循环只需要循环3次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值