1.数组元素的赋值(杨辉三角、回形数等)
1-1杨辉三角
/*【提示】1. 第一行有 1 个元素, 第 n 行有 n 个元素2. 每一行的第一个元素和最后一个元素都是 13. 从第三行开始, 对于非第一个元素和最后一个元素的元素。即:yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];*/package day07;public class YangHui { public static void main(String[] args) { //1.声明并初始化二维数组 int [][]yanghui =new int [10][];// yanghui[0][0]=1;// yanghui[1][0]=1;// yanghui[1][1]=1; //2.给数组的元素赋值 for(int i=0;i<yanghui.length;i++){ yanghui[i]=new int [i+1]; //给首末元素赋值 yanghui[i][0]=1; yanghui[i][i]=1; //给非首末元素赋值 for(int j=1;j<yanghui[i].length-1;j++) yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j]; } //遍历数组 for(int i=0;i<yanghui.length;i++){ for(int j=0;j<yanghui[i].length;j++){ System.out.print(yanghui[i][j]+" "); } System.out.println(); } }}
2.求数值型数组中元素的最大值、最小值、平均数、总和等
package day07;/*定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,和值,平均值,并输出出来。要求:所有随机数都是两位数。[10,99]公式:(int) Math.random()*90+10;*/public class ArrayTest { public static void main(String[] args) { int []arr=new int[10]; for(int i=0;i<arr.length;i++){ arr[i]=(int)(Math.random()*90+10); } for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+" "); } System.out.println(); //求数组元素的最大值 int maxValue=arr[0]; for(int i=0;i<arr.length;i++){ if(maxValue<arr[i]){ maxValue=arr[i]; } } System.out.println("最大值为:"+maxValue); //求数组元素的最小值 int minValue=arr[0]; for(int i=0;i<arr.length;i++){ if(minValue>arr[i]){ minValue=arr[i]; } } System.out.println("最小值为:"+minValue); //求数组元素的总和 int sum=0; for(int i=0;i<arr.length;i++){ sum+=arr[i]; } System.out.println("总和为:"+sum); //求数组元素的平均数 float average ; average=(float) (sum*1.0/10); System.out.println("平均值为:"+average); }}
3. 数组的复制、反转、查找(线性查找、二分法查找)
3-1复制
/*使用简单数组(1)创建一个名为ArrayTest的类,在main()方法中声明array1和array2两个变量,他们是int[]类型的数组。(2)使用大括号{},把array1初始化为8个素数:2,3,5,7,11,13,17,19。(3)显示array1的内容。(4)赋值array2变量等于array1,修改array2中的偶索引元素,使其等于索引值(如array[0]=0,array[2]=2)。打印出array1。思考:array1和array2是什么关系? array1和array2地址值相同,都指向了堆空间的唯一一个数组实体拓展:修改题目,实现array2对array1数组的复制*/package day07;public class Arrayexer { public static void main(String[] args) { int[]array1,array2; array1= new int []{2,3,5,11,13,17,19}; //显示array1的内容 for(int i=0;i<array1.length;i++){ System.out.print(array1[i]+"\t"); } //复制array2变量等于array1 //不能称之为数组得到复制 array2=array1; //赋值array2变量等于array1,修改array2中的偶索引元素,使其等于索引值 for(int i=0;i<array2.length;i++){ if(i%2==0){ array2[i]=i; } } System.out.println(); //打印出array1 for(int i=0;i<array1.length;i++){ System.out.print(array1[i]+"\t"); } }}
3-2 反转
package day07;public class ArrayExer2 { public static void main(String[] args) { String[]arr =new String[]{"JJ","DD","MM","GG","AA","BB"}; //数组的复制 String []arr1 =new String[arr.length]; for(int i=0;i<arr1.length;i++){ arr1[i]=arr[i]; } //数组的反转 for(int i=0;i<arr1.length;i++){ System.out.print(arr1[i]+" "); } System.out.println(); for(int i=0;i<arr1.length;i++){ System.out.print(arr1[arr1.length-i-1]+" "); } }}
3-3 二分法查找
//二分法查找: // 前提,所要查找的数组必须有序 int [] arr2 =new int []{-99,-54,-2,0,2,33,43,256,999}; int number=34; int head=0; int end =arr2.length-1; boolean isFlag1=true; while(head <= end){ int middle = (head + end) / 2; if(arr2[middle] == number){ System.out.println("找到指定的元素,索引为:" + middle); isFlag = false; break; }else if(arr2[middle] > number){ end = middle - 1; }else{//arr3[middle] < number head = middle + 1; } } if(isFlag){ System.out.println("未找到指定的元素"); } }
4. 数组元素的排序算法
4-1 冒泡排序
package day07;public class BuubbleSortTest {/* *数组的冒泡排序 的实现 * */ public static void main(String[] args) { int[] arr=new int[]{43,32,76,98,-90,-67,-32,33,99}; //冒泡排序 for(int i=0;i<arr.length-1;i++){ for(int j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } for(int i=0;i<arr.length;i++){ System.err.print(arr[i]+"\t"); } }}