3.3数组中涉及到的常见算法
2022/1/2 14:38:38
本文主要是介绍3.3数组中涉及到的常见算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.数值元素的赋值(杨辉三角,回形数等)
2.求数值型数组中元素的最大值,最小值,平均数,总和等
3.数组的复制,反转,查找(线性查找,二分法查找)
4.数组元素的排序算法
2.求数值型数组中元素的最大值,最小值,平均数,总和等
题目:定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后
求出所有元素的最大值,最小值,和值,平均值,并输出出来.
要求:所有随机数都是两位数.
[10,99]
公式:(int)(Math.random()*(b-a+1)+a)
public class ArrayTest1{ public static void main(String[] args){ int[] arr = new int[10]; for(int i = 0;i <arr.length;i++){ arr[i] = (int)(Math.random()*(99-10+1)+10); } //遍历 for(int i = 0;i < arr.length;i++){ System.out.print(arr[i]+"\t"); } System.out.println(); //求最大值 int maxValue = arr[0]; for(int i = 1;i <arr.length;i++) { if(maxValue < arr[i]){ maxValue = arr[i]; } } System.out.println("最大值为:"+maxValue); //求最小值 int minValue = arr[0]; for(int i = 1;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); //数组的平均数 int avgValue = sum/arr.length; System.out.println("平均数为:"+avgValue); } }
3.数组的复制,反转,查找(线性查找,二分法查找)
1.
思考:array1和array2地址值相同,都指向了堆空间的唯一的一个数组实体
public class ArrayTest2{ public static void main(String[] args){ int[] array1,array2; array1 = new int[]{2,3,5,7,11,13,17,19} ; //遍历,显示array1的内容 for(int i = 0;i < array.length;i++){ System.out.print(array[i]+"\t") ; } //赋值array2变量等于array1 array2 = array1; //修改array2中的偶索引元素,使其等于索引值(如array[0]=0,array[2]=2) for(int i = 0;i < array1.length;i++){ if(i%2 == 0){ array2[i] = i; } } //打印出array1 for(int i = 0;i < array1.length;i++){ System.out.print(array[i]+"\t") ; } //修改题目:实现array2对array1的复制 for(int i = 0;i <array1.length;i++){ array2[i] = array1[i] ; } } }
2.
public class ArrayTest2{ public static void main(String[] args){ String[] arr = new String[]{"JJ","DD","MM","BB","GG","AA"}; //数组的复制 String[] arr1 = new String[arr.length]; for(int i = 0;i<arr1.length;i++){ arr1[i] = arr[i]; } //数组的反转 /* 方式1: for(int i = 0;i <arr.length/2;i++){ String temp = arr[i]; arr[i] = arr[arr.length-i-1]; arr[arr.length-i-1] = temp; } //方式2: for(int i = 0;j = arr.length - 1;i < j;i++;j--){ String temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } */ //遍历 for(int i = 0;i <arr.length;i++){ System.out.print(arr[i]+"\t"); } System.out.println(); //查找 //线性查找: String dest = "BB"; boolean isFlag = true; for(int i = 0;i <arr.length;i++){ if(dest.equals(arr[i])){ System.out.println("找到了指定的元素,位置为:"+i); break; } } if(isFlag){ System.out.println("未找到指定元素"); } //二分查找(前提:所要查找的数组必须要有序) int[] arr2 = new int[]{-98,-34,2,34,54,66,79,105}; int dest1 = -34; int head = 0; //初始的首索引 int end = arr2.length-1; //初始的末索引 boolean isFlag1 = true; while(head <= end){ int middle = (head+end)/2; //定义中心 if(dest1 == arr2[middle]){ System.out.println("找到了指定的元素,位置为:"+i) ; isFlag1 = false; break; }else if(arr2[middle]>dest1){ end = middle-1; }else{ //arr2[middle]<dest1 head = middle+1; } } if(isFlag1){ System.out.println("未找到指定元素"); } } }
这篇关于3.3数组中涉及到的常见算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南