第四节、数据结构
一、 概述
我的感觉是数据类型中的某些特殊数据类型组成,他是属于属性的组成之二数据类型;
二、 分类数组为相同数据类
1、数组
1.1概述
三、 型的元素组成的集合,数组元素按线性顺序排列
注:线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素;除最后一个元素外,每一个元素都有唯一的后继元素(“一个跟一个”),可以通过元素所在位置的顺序号(下标)做标识访问每一个元素(下标从0开始,最大到元素个数-1);
1.2使用
1.2.1数组的声明
声明数据的语法一为:数据类型[] 数组名;
声明数组的语法二为: 数据类型[] 数组名 = new 数据类型 [ 正整数表示数组的长度] ;
(1)确切的数据类型:用于开辟空间大小
(2)整体的数组名字:用于对数据的引用
(3)不能缺少的“ [ ] ”
注:声明数组的时候,int[] arr 与 int arr [] 两种写法均可。常用方式为int[] arr。
1.2.2数组的初始化
(1)int [ ] arr = { 10,23,30,-10,21 } ;
(2)int[] arr;
arr = new int[]{ 10,23,30,-10,21 };
(3)int[] arr = new int[]{ 3,6,8,9 };
(4)int[] arr = new int[10]; arr[1]=1;
1.2.3数组访问
(1)获取数组的长度int[] arr = new int[]{ 3,6,8,9 };
int len = arr . length ;
(2)通过下标访问数组元素
int temp = arr [ 2 ]; //获取第3个元素,即为6
(3)遍历数组元素
通常可选择for循环语句,循环变量作为访问数组元素的下标,即可访问数组中的每一个元素
注意:循环的计数器的变化范围从0到数组长度– 1,可通过写成“小于长度”这样的条件来防止下标越界(超出范围)。
(4)数组的复制
System.arraycopy方法用于数组复制:
public static void arraycopy(Object src, int srcPos,Object dest, int destPos, int length)
- src:源数组
- srcPos:源数组中的起始位置
- dest:目标数组
- destPos : 目标数组中的起始位置
- length:要复制的数组元素的数量
Arrays.copyOf方法用于数组复制:
类型[ ] newArray = Arrays.copyOf ( 类型[ ] original , int newLength )
- newLength小于源数组,则进行截取;(自己通过代码演示效果);
- newLength大于源数组,则用0或 null进行填充;
(5)数组的扩容
int [ ] a = { 10,20,30,40,50 } ;
a = Arrays . copyOf ( a, a.length+1 );
1.2.4数组的排序
(一)概述
所谓排序,是指将数组元素按照从小到大或从大到小的顺序重新排列
(二)分类
常用排序算法有:插入排序、冒泡排序、快速排序等;
(三)冒泡排序
它的排序原则为:比较相邻的元素,如果违反最后的顺序准则(从大到小或是从小到大),则交换。可以简化理解为:第一次找到所有元素中最大(或最小)的放在最后一个位置上,不再变动;第二次找到剩余所有元素中最大(或最小)的放在倒数第二个位置上,不再变动,以此类推,直到排序完成。在进行比较时既可以采用“下沉”的方式,也可以使用“上浮”的方式实现。
(四)Arrays.sort方法用于数组排序
int[ ] arr = { 49, 81, 1, 64, 77, 50, 0, 54, 77, 18 };
Arrays.sort( arr ) ;