数组的基本概念及作用
数组是相同数据类型元素的集合
数组本身是引用数据类型,即对象。但是数组可以存储基本数据类型,也可以存储引用数据类型。
一维数组
数组的创建
数组的声明的两种方式:
数据类型 [ ] 数组名字 例如:int [ ] a;
数据类型 数组的名字[ ] 例如:int a [ ];
为了避免混淆,建议大家使用第一种声明方式。
数组创建的三种方法:
声明数组的同时,根据指定的长度分配内存,但数组中元素值都为默认的初始值
int [] array0 = new int[5];
声明数组并分配内存,同时将其初始化
int [] array1 = new int[ ]{1,2,3,4,5};
和前面一种方式相同,仅仅只是语法的表达不同,这种方式相对简略
int [ ] array2 ={1,2,3,4,5};
数组的创建也可以分为动态和静态两种:
动态创建数组(没有为元素赋值,只规定了数组长度,可以结合for循环进行赋值)
int [ ] array3 =new int [5];
静态创建数组,在创建的同时,为每个元素都赋予初值
int [ ] array4=new int[ ]{1,2,3,4,5};
数组的长度:length属性
int [ ] b = new int [ ]{1,2,3,4,5};
System.out.println(b.length);
数组的迭代
数组的迭代有两种方式:
第一种:for循环
for(int i=0;i<b.length;i++){
System.out.println(b[i]);
}
第二种:增强for循环(for-each循环)
for(声明语句:表达式){
//代码句子
}
声明语句:声明一个新的局部变量,此变量的类型与要遍历的数组元素类型相同。其作用范围限定在循环语句块,该值要与此时数组元素的值相等。
表达式:表达式是要访问的数组名,或者是返回值为数组的方法
在遍历数组时,使用for-each是一种相对简便的方式
for(int x:b){
System.out.println(x);
}
冒泡排序
如下图的演示:
原数组
第一次循环
第二次循环
第三次循环
算法思想:
1.创建数组,声明数组并对数组元素进行初始化。
2.确定数组的长度,用二重循环实现,外层循环作用范围数组长度-1(因为数组的索引),内层循环作用范围为数组长度-1-当前外层循环达到的次数。
3.排序完成,打印数组即可。
代码实现:
public class Demo1{
public static void main(String []args){
int [] array = {1,11,8,4,3};
int temp=0;
//通过二重循环,排序
for(int i=0;i<array.length-1;i++){
for(int j=0;j<array.length-1-i;j++){
if(array[j]>array[j+1]){
temp=array[j+1];
array[j+1]=array[j];
array[j]=temp;
}
}
}
//打印数组
for(int x:array){
System.out.print(x+" ");
}
}
}
选择排序
算法思想:
1.从待排序的数组元素中,选出最小or最大的元素,标记此下标。
2.将标记下标的数组元素与此刻的首位元素进行交换。
3.重复上述步骤,直到排序结束。
代码实现:
public class Demo1 {
public static void main(String[] args) {
int[] b={2,4,5,1,7,12};
int temp=0;
for(int i=0;i<b.length-1;i++){
for(int j=i;j<b.length-1-i;j++){
if (b[i] > b[j+1]) {
temp=b[i];
b[i]=b[j+1];
b[j+1]=temp;
}
}
}
System.out.println(Arrays.toString(b));
}
}
第一次写博客,有很多东西都不知道,如果有问题欢迎提出~~