一.概念
1.程序=算法+数据结构
(1)算法:解决问题的步骤即流程;
(2)数据结构:把数据按照特定的某种结构来保存,设计合理的数据结构是解决问题的前提;好的数据结构导致好的算法;
2.数组是最基本的一种数据结构
3.数组是相同数据类型的元素组成的集合;元素按线性顺序排列(“一个跟一个”)可以通过元素所在位置的顺序号 (下标)做标识访问每个元素。
二.数组声明
1.数据类型 [] 数组名=new 数据类型[大小];
例:int [] arr=new int [4];//arr为数组类型变量(引用)
2.int [] arr 和int arr [] 两种写法均可
三.数组初始化
1.数组一new就有初始值:byte,short,int,long,char为0;double,float为0.0;boolean为false;
2.数组声明的同时初始化:int [] arr={2,3,4,5};
3.先声明后初始化: int [] arr; arr=new int[]{2,3,4,5};
四.数组
1.通过数组的length属性可以获取数组长度;
2.数组中的元素通过下标的方式访问;
3.遍历数组;
int [] arr=new int[]{2,3,4,5,6,7};
for(inti=0;i<arr.length,i++){
System.out.println(arr[i]);
}
4.随机数:
Math.random(); 随机生成0~1中的数,包含0不包含1;其余随机范围在此基础上
5.数组的复制
(1)System.arraycopy(a1,b,a2,c,d);
a1:源数组 b:源数组中起始位 a2:目标数组 c:目标数组起始位 d:要复制的数组元素的数量
(2)Arrays.copyOf:
类型 [] newArray=Arrays.copyOf(oldArray,newLength);//不及上面灵活
*用于数组扩容:int [] a={10,20,30,40};
a=Arrays.copyOf(a,a.length+1);
第一个a:扩展后的数组; 第二个a:原数组; 第二个参数:扩展后的长度;
6.数组的排序: 将数组元素从大到小或从小到大的排列
(1)Arrays.sort();//最简方法
(2)冒泡排序: int [] arr={99,33,45,5,56};
①第一轮:
99与33比 换 33 99 45 5 56
99与45比 换 33 45 99 5 56
99与5比 换 33 45 5 99 56
99与56比 换 33 45 5 56 99 ----->冒出99
②第二轮
33与45比 不换
45与5比 换 33 5 45 56 99
45与56比 不换 ----->冒出56
③第三轮
33与 5比换 5 33 45 56 99
33与45比不换 ----->冒出45
④第四轮
5与33比 不换 ------>冒出33
分析:(1)5个数要分4轮
for(inti=0;i<arr.length-1;i++){ }
(2)比较:i=0,4次;i=1,3次;i=2,2次;i=3,1次;
for(int j=0;j<arr.length-1-I,j++){ }
综合:
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-I,j++){
if(arr[j]>arr[j+1]){
int t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}