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("未找到指定元素");
}
}
}
标签:arr,String,int,array2,array1,算法,3.3,数组 来源: https://blog.csdn.net/RiamyLiu/article/details/122276185