1.1数组的求和
//静态声明数组 int[] arr={1,3,5,7,9}; //第一步:遍历数组,得到数组的每一个元素,把每一个元素进行累加 int sum=0; //遍历数组 /如果我们使用的是IDEA开发,那么有一个快捷键:arr.fori可以直接输出for循环的内容 for(int i=0;i<arr.length;i++){ sum=sum+arr[i]; } //输出sum System.out.println(sum);1.2数组求最大值,最小值
int[] arr={1,3,2,5,4}; //这个和打擂台相似,先要有一个擂主 int max=arr[0]; int min=arr[0]; //遍历数组 for(int i=0;i<arr.length;i++){ if(max<arr[i]){ max=arr[i]; } if(min>arr[i]){ min=arr[i]; } } System.out.println(max); System.out.println(min);1.3数组的复制
int[] arr={1,3,5,7,9}; //先定义一个空的数组(确定数组的长度) int[] arr1=new int[arr.length]; //然后遍历arr,得到arr的每一个元素,再赋值给arr1 for(int i=0;i<arr.length;i++){ arr1[i]=arr[i]; } //遍历复制完之后的arr1 for(int i=0;i<arr1.length;i++){ System.out.print(arr1[i]+"\t"); }1.4数组的合并
//需求:将两个数组合为一个数组 int[] arr={1,3,5}; int[] brr={7,9,11,13}; //分析:定义一个空的数组,接收两个数组的值,确定长度arr.length+brr.length int[] crr=new int[arr.length+brr.length]; for(int i=0;i<arr.length;i++){ crr[i]=arr[i]; } for(int i=0;i<brr.length;i++){ crr[i+arr.length]=brr[i]; } for(int i=0;i<crr.length;i++){ System.out.print(crr1[i]+"\t"); }1.5数组的反转
//第一种方法:倒着遍历 int[] arr={2,4,6,8,10}; for(int i=arr.length-1;i>=0;i--){ System.out.print(arr[i]); } //第二种方法:交换思想 arr: 2|4|6|8|10 下标: 0|1|2|3|4 arr[0]与arr[4]进行交换 arr[1]与arr[3]进行交换 int[] arr={2,4,6,8,10}; for(int start=0,end=arr.length-1;start<end;start++,end--){ //arr[start]与arr[end]进行交换 int c=arr[start]; arr[start]=arr[end]; arr[end]=c; } for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+"\t"); }2.1数组的增删改查
//需求:键盘录入一个数,查找这个数是否存在,存在的话输出下标,如果不存在给出提示“此数据不存在” import java.util.*; int[] arr={1,3,5,7,9}; System.out.println("请输入一个数:"); Scanner sc=new Scanner(System.in); int num=sc.nextInt(); //进行查找的步骤 for(int i=0;i<arr.length;i++){ if(arr[i]==num){ System.out.println("角标为:"+i); }else{ System.out.println("查无此数据"); } } //输出结果 请输入一个数:1 角标为0 查无此数据 查无此数据 查无此数据 查无此数据 //那么如何改进呢?? 这里涉及一种思想:先默认此数据没有找到,定义此数据的角标是一个负数 //改进后的代码: import java.util.*; int[] arr={1,3,5,7,9}; System.out.println("请输入一个数:"); Scanner sc=new Scanner(System.in); int num=sc.nextInt(); int index=-1; //关键的一步 //进行查找的步骤 for(int i=0;i<arr.length;i++){ if(arr[i]==num){ index=i; System.out.println("角标为:"+index); } } if(index==-1){ System.out.println("查无此数据"); } //输出结果 请输入一个数:1 角标为0 查找5第一次出现时的角标 int[] arr={1,3,5,6,5,9}; int num=5; //默认没有找到的情况 int index=-1; //遍历数组 for(int i=0;i<arr.length;i++){ //判断数组中的每一个元素是否和num相同 if(arr[i]==num){ index=i; System.out.println("角标为:"+index); break; //找到元素第一次出现的位置后,跳出循环 } } if(index==-1){ System.out.println("查无此数据"); } //输出结果:角标为22.2 排序--冒泡算法
int[] arr={2,6,3,8,1}; //需求:按照从小到大的顺序排列 //什么是冒泡排序:每两个相邻元素都要进行比较,然后用到一个交换思想 if(arr[0]>arr[1]) 交换位置 if(arr[1]>arr[2]) 交换位置 if(arr[2]>arr[3]) 交换位置 if(arr[3]>arr[4]) 交换位置 //结论:四个if语句走完,数组的最大值会到最右边 if(arrr[0]>arr[1]){ int c=arr[0]; arr[0]=arr[1]; arr[1]=c; } if(arrr[1]>arr[2]){ int c=arr[1]; arr[1]=arr[2]; arr[2]=c; } if(arrr[2]>arr[3]){ int c=arr[2]; arr[2]=arr[3]; arr[3]=c; } if(arrr[3]>arr[4]){ int c=arr[3]; arr[3]=arr[4]; arr[4]=c; } //这里注意:if(arr[4]>arr[5]) //角标从0-4,如果出现5就会出现角标越界的情况 //四个if合而为一,如下所示 for(int i=0;i<arr.length-1;i++){ int c=arr[i]; arr[i]=arr[i+1]; arr[i+1]=c; } //第一次遍历之后,数组为 2,3,6,1,8 //这时候还没完成我们的需求:从小到大排序,而我们第一遍走完之后,数组中的最大值到了最右边 //倒数第二大的值如果想往最右边的倒数第二个位置靠,就再走三个if语句,加上最开始的一个if语句,一个四个if语句 第一次走完:2|3|6|1|8 第二次走完:2|3|1|6|8 第三次走完:2|1|3|6|8 第四次走完:1|2|3|6|8 for(int i=1;i<arr.length;i++){ for(int j=0;j<arr.length-1;j++){ int c=arr[j]; arr[j]=arr[j+1]; arr[j+1]=c; } } //输出排完序之后的数组: for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+"\t"); }