1、数组
数组:用来保存一组相同类型的数据
数组是定长的。定义数组后,数组的长度就固定了。例如,声明一个长度为10的数组,那么这个数组 中最多只能存放10个元素。
数组的声明和赋值:int[] a = {12,45,64,54,87};
Int[] :数组类型(引用数据类型);
创建数组:int[] a1= new int[] {45,56,88,84,41};
数组的初始化:
//静态初始化
int[] arr=new int[]{1,2,3};
//动态初始化
String[] strArr=new String[3];
strArr[0]="Hello";
strArr[1]="World";
strArr[2]="Hello World";
数组中的每一个元素都有索引(从0开始)关键字为index;例如,a1[0] = 45; a1[1] = 56; a1[2] = 88;
数组中的length属性用来标记数组长度(a1.length);
字符串使用length() 获取长度(String name = “aa”; name.length();)
数组的遍历:
For(int i = 0;i<a1.length;i++){
System.out.println(a1[2]);
}
//foreach 增强for循环
//for(元素的类型 元素的名称 : 要遍历的数组)
For(int num : a1){
System.out.println(num);
}
求数组中最大值代码示例:
Int[] array = {56,51,78,15,48,32};
//获取array数组中的最大值
//标记最大值
Int max= 0;
For(int arr : array){
If(arr>=array){
max = arr;
}
}
System.out.println(max);
2、二维数组 : 数组嵌套两层;
声明与赋值:
//三行四列的二维数组
//大数组中有三个小数组,每个小数组中都有四个元素
int[][] array = { {56,5,65,88}, {74,87,64,89}, {64,54,99,66} };
二维数组遍历:
//使用foreach遍历数组
For(int[] num : array){
//num是小数组
For(int m : num){
System.out.println(m);
}
}
菲波那契数列:
//1,1,2,3,5,8,13,21......
//计算出指定的某个数字
//递归:在方法内部使用直接或间接方式,调用自身方法
//递归方法内一定有临界条件
public static int number(int n) {
if(n==1 || n==2) {
return 1;
}else {
int num= Demo.number(n-1)+Demo.number(n-2);;
return num;
}
}
//计算某个数的阶乘
//7! = 1*2*3*4*5*6*7
Public static int fac(int n){
If(n==1){
Return 1;
}else{
Return fac(n-1)*n;
}}
3、排序算法
冒泡排序(重点)、选择排序、插入排序、快速排序;
冒泡排序:依次比较相邻的两个数字,如果第一个数字比第二个数字大,交换位置,一轮比较结束后,最大的数字放在最后位置;
int[] array = {54,85,66,46,23,45,74,14};
for(int i=0;i<array.length-1;i++){
for(int j=0;j<array.length-1-i;j++){
//相比较的两个数字: array[j] 和 array[j+1]
if(array[j]>array[j+1]){
//交换位置
int num = array[j];
array[j] = array[j+1];
array[j+1] = num;
}
}
//一轮排序
//Arrays.toString(array) 把数组转换成String
//Arrays 数组的工具类
System.out.println(Arrays.toString(array));
}
选择排序: 选择一个数字,使其与其他数字依次比较,如果选择的数字的大,交换位置,一轮排序结束后,最小的数字放在第一个位置上;
插入排序: 把要排序的数字,依次插入到有序数列中;
快速排序:
int[] arr = {45,54,56,31,66,87};
//sort() 使用的是经过优化的快速排序
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
二分查找(折半查找): 注意:建立在有序的数列上;
//参数1:目标数组
//参数2:目标元素
//返回值:元素的索引,如果为负数,说明数组中没有此元素
int index = Arrays.binarySearch(arr,56);
System.out.println(index);
计算考试总成绩示例:
//参数: 学生成绩
//参数... :表示此方法的参数数量不确定,可以是0个,也可以是无数个
public static void total(int...score){
//score参数在方法中作为数组使用
int num = 0;
for(int m : score){
num +=m;
}
System.out.println("总成绩:"+num);
}
二维数组中求内层数组最大值中的最小值:
int[][] array = {{1,84,45,88},{45,13,98,87},{94,75,61,24}};
//求内层数组最大值中的最小值
int min = Integer.MAX_VALUE;
for(int[] array1:array) {
//array1:每个小数组
int max = Integer.MIN_VALUE;//定义一个int类型的最小值
for(int num:array1) {
if(num>=max) {
max = num;
}
}
System.out.println(max);
//取最小值
if(max<min) {
min = max;
}
}
System.out.println(min);