1.数组的一些基本概念:
1.1数组是一个变量,储存相同数据类型的一组数据;
1.2在内存上划出遗传连续空间;
1.3基本要素:
1.3.1标识符:数组名称用于区分不同的数组;
数组元素:向数组中存放的数据;
元素下标:对数组元素进行编号,从0开始到a.length-1结束,a为数组名称,通过下标可以访问到每个元素;
1.4使用步骤
1.41声明数组
分配空间(1,2可以合并)
赋值
处理数据
1.5典型应用
1.51实现数组的排序(1,双重循环;2,Arrays.sort(数组名))
求数组的极值
向数组(有序无序,自定义,手动输入)中插入元素
//数组基本格式
```php
int a[]=new int[5];//...........................定义一个动态数组(未赋值组内数据,甚至没有赋值数组大小)
a[0]=1;//.......................................赋值组内数据,下标从0开始,小于组值数;
a[1]=2;
a[3]=4;
System.out.println(a[1]);
System.out.println(a[4]);//.....................输出找不到下标(未赋值),int类型默认0;
//规律数组可以用循环输入
int a[]=new int[5];//..........................定义一个动态数组,5个变量;
for (int i=0;i<a.length;i=i+1){//..............a.length为数组长度,此题对应5;
a[i]=i+1;//................................循环增加a【i】
}
System.out.println(a[4]);
//静态赋值
// int a[]={1,2,3,4,5};//.........................静态赋值属于数组内值确定的情况下使用,现实一般都是动态输入(重新定义值);
//动态数组,手动输入数值并处理(输入成绩求学生平均分)
// Scanner s=new Scanner(System.in);
int a[]=new int[5];//.......................................定义一个动态数组,5个变量;
double b=0,c;//.............................................b为成绩和,c为平均分;
for (int i=0;i<a.length;i=i+1){//...........................a数组循环
System.out.print("请输入第"+(i+1)+"个学生的成绩:");
a[i]=s.nextInt();//.....................................循环输入成绩,重点;
b=b+a[i];
}c=b/a.length;
System.out.println("平均分是:"+c);
//数组排序,重点,2重循环(循环比较)
//1,arrays.sort[a]直接取数组排列(直接调用程序),最简单;
// int a[]={50,45,56,78,98,78};//..................................定义一个动态数组,6个变量;
Arrays.sort(a);//...............................................向系统调用数组排列
for (int i=0;i<a.length;i=i+1){//...............................正向排列数组
System.out.print(a[i]+"\t");
}
for (int i=a.length-1;i>=0;i=i-1){//...............................反向排列数组(更改初始值,条件变量和范围即可)
System.out.print(a[i]+"\t");
//2,使用2重循环排列数组(使用上面的数组)
int t;//..........................................................添加中间变量比较3个大小;
for (int i=0;i<a.length;i++){//...................................外层依次选中一个;
for (int j=0;j<a.length;j++){//...............................内层一轮与外层选中的一个变量相比较;
if (a[i]<a[j]){//.........................................><控制排列顺序,冒泡排列;
t=a[i];//................................................. 添加中间变量是因为程序中的=是为覆盖,
// 所以先用中间变量把被覆盖的变量给代换出来。
// 冒泡法的编程思想为两数比较大小排列,例如12.23.34.45,这样比较,
// 就能和每个数比较大小,从而使变量插队到合适的位置
// (内层循环需要外层循环提供变量然后内循环一个轮回,
// 才能把外层循环提供的变量跟全体相比找到合适的位置,
// 然外层变量就是数组的循环,内层也一样,所以就能理解为,
// 数组中的一个变量跟数组中的所有变量比较排序。)
a[i]=a[j];
a[j]=t;
}
}
}for (int i=0;i<a.length;i++){//..............................循环输出外层
// (已经排列好,是经过内层循环比较排列好的外层循环数组)的数组;
System.out.print(a[i]+"\t");
}
//数组求最大值(循环,if判断比较和代替,一样采用中间变量max);
//数组求最小值同理 (依然采用上面的数组);
int max=a[0];//..............................假定一个中间变量并赋值其一个数组中的任意一个变量;
for (int i=0;i<a.length;i++){//..............循环整个数组;
if (a[i]<max){//.........................使数组中的所有变量和假定中间变量比较;
max=a[i];//..........................通过if筛选则使假定中间变量代替通过的数组变量;
}
}
System.out.println(max);//...................输出最终的假定中间变量;
//输入任意数组,添加新的数,占位,总体重新排列;
Scanner s=new Scanner(System.in);
int c=0;//................................................输入数字所占位置下标;
// int a[]={1,3,4,5,6,0};
int a[]=new int[5];//.....................................定义一个动态数组;
for (int i=0;i<a.length-1;i++){//.........................设置数组赋值和数量;
System.out.println("请输入第"+(i+1)+"个数:");
int b=s.nextInt();
a[i]=b;
continue;//...........................................循环输入整个数组;
}
System.out.print("请输入要插入的数:");//.................插入一个数;
int d=s.nextInt();
for (int i=0;i<a.length;i++){//...........................插入的数和数组每项比较获取本数组的下标
// (数组降序if(输入>a[i]);数组升序if(输入<a[i]))
if (d<a[i]){
c=i;
break;//..........................................找到输入数字占本数组位置的下标,结束本循环;
}
}for (int i=a.length-1;i>=c+1;i--){//.....................根据找到的属于输入的下标,从其后一位开始往后移一位;
// 因为被覆盖的工具0在数组最后,所以从0开始循环减一位;
//前一位覆盖0的位置,依次类推到输入位置;这个时候还未加入输入数据,
// 而是把它位置腾出来了,显示结果为有两个相同的数字,因为向后覆盖了,
// 而最前面的多出来的数字就是输入的位置;
a[i]=a[i-1];//........................................向后进1 关系式;
}a[c]=d;//................................................将输入带入数组,覆盖重复的数位;
Arrays.sort(a);
System.out.println("输入数字排列下标为:"+c);
System.out.print("重新排列顺序为:");
for (int i=0;i<a.length;i++){
System.out.print(a[i]+"\t");
}//........................................................数组到此结束;
2020年5月25日