6.数组(遗留)

我这些学习笔记,记录的都是我自己认为的知识点,可能以后再看的时候还要翻书,但是可以用来定位到准确的书中示例的位置,减少翻书重找的时间,利于自身知识体系的搭建。                   self-transcendence

6  数组

java把数组看做对象,数组中每个元素具有相同的数据类型,数组分为一维数组和二维数组

6.2  一维数组的创建和使用

一维数组是一组相同类型数据的线性集合

6.2.1  创建一维数组

一维数组的两种创建方式:

1.先声明,再用new进行内存分配

int attr[];

int[] attr;

声明数组之后给出了数组名字和元素的数据类型,接下来要为数组分配内存空间。

在为数组分配内存空间时,必须指定数组的长度。

attr[] = new int[5];

使用new为数组分配内存时,整型数组中各个元素的初始值为0

2.声明的同时为数组分配内存

int attr[] = new int[5];

6.2.2  初始化一维数组

int attr[] = new int[]{1,2,3,4,5};

 

 

 

6.3  二维数组的创建和使用

1.先声明,再用new进行内存分配

int attr[][];

attr = new int[2][4];//二维数组attr是由两个长度为4的一维数组构成

attr     length=2     length=4

        a[0]         a[0][0]  a[0][1]  a[0][2]  a[0][3]

        a[1]         length=4     

a[1][0]  a[1][1]  a[1][2]  a[1][3]

2.声明的同时分配内存

attr = new int[2][];

attr[0]= new int[2];

attr[1] = new int[3];

attr     length=2     length=2

        a[0]         a[0][0]  a[0][1]

        a[1]         length=4     

a[1][0]  a[1][1]  a[1][2]

6.3.2  二维数组初始化

int attr[][] = {{1,2},{10,5}};

attr[1][1]的值为5

赋值方式是attr[x][y] = 20;例如attr[1][1] = 20;

 

 

 

6.4  数组的基本操作

java.util包的Arrays包含了操作数组的各种方法。

遍历二维数组用双层for嵌套,通过length属性获得数组的长度。

数组中的元素可以用Arrays类的fill()来替换:

.fill ( int[] a,int value);//把数组中所有元素的值改为value

.fill ( int[] a,int index, int last, int value);//把数组中index下标到last-1下标的值改为value

数组升序排序可以用Arrays类的sort ( )方法实现。

.sort ( attr);//attr数组名。javaString类型数组的排序算法是根据字典编排顺序排序,数字排在字母前,大写字母排在小写字母前。

.copyOf ( attr,int length);//attr原数组,length新数组长度,新的长度大于旧的,则用0填充,新的长度小于旧的,则从旧的第一个开始截取新的长度。

.copyOfRange ( attr, int index , int last);//从旧数组的index下标(包括)开始复制到last的下标位置(不包括)。last可大于旧的长度,index必须在旧数组的长度范围内。

.binarySearch ( Object[] a, Object key);//在数组a中搜索key,如果key存在,则返回下标,否则返回-1或者“-”(插入点),插入点是搜索键将要插入数组的哪一点,即第一个大于此键的元素下标。

.binarySearch ( Object[] a, int index, int last, Object key);//用查询方法必要先排序,来获得准确的索引值,如果key存在,返回索引,否则返回-1或者“-”(插入点)。如果范围中所有元素都小于指定的键,则为last(注意,这保证了当且仅当此键被找到时,返回的值将大于等于0

int attr[] = new int[]{4, 25, 10};

Arrays.sort(attr);

int index = Array.binarySearch(attr, 0 ,1 ,8);

上面代码中变量index的值是元素“8”在数组中索引在0~1内的索引位置。由于在指定的范围内并不存在元素“8”,index的知识“-”(插入点)。如果对数组进行排序,元素“8”应该在“25”的面前,因此插入点应是元素“25”的索引值2,所以index的值是-2。如果数组中的所有元素都小于指定的键,则为attr.length(注意,这保证了当且仅当此键被找到时,返回的值将大于等于0

 

 

 

6.5  数组排序算法

6.5.1  冒泡排序

1.基本思想

2.算法示例

3.算法实现

6.5.2  直接选择排序

1.基本思想

2.算法示例

3.算法实现

6.5.3  反转排序

1.基本思想

2.算法示例

3.算法实现


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值