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*7Public 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);
