import java.util.Arrays;
public class Array {
public static void main(String[] args) {
/*题目一:数组最小、大值,反转,排序
首先创建一个长度是5的数组,然后给数组的每一位赋予随机整数
获取0-100的 随机整数:(int) (Math.random() * 100)
1、通过for循环,遍历数组,找出最小值
2、通过foreach循环,遍历数组,找出最大值
2、使用for循环或者while循环,对这个数组实现反转效果
3、首先用选择法正排序,然后再对其使用冒泡法倒排序
*/
final int LENGTH=5;//数组长度
int[] a=new int[LENGTH];
int minValue,maxValue;
//对数组赋予随机整数
for(int i=0;i<LENGTH;i++)
{
a[i]=(int)(Math.random()*100);
}
System.out.println(Arrays.toString(a));//打印数组
//求数组最小值:将每个元素与当前最小值比较,如果小于则更改最小值
minValue=a[0];
for(int i=1;i<LENGTH;i++)
{
if(a[i]<minValue)
minValue=a[i];
}
System.out.println("最小值是:"+minValue);
//求数组最大值
maxValue=a[0];
for(int each:a)
{
if(each>maxValue)
maxValue=each;
}
System.out.println("最大值是:"+maxValue);
//数组反转:将前一半元素与后一半元素交换位置
for(int i=0;i<=(LENGTH-1)/2;i++)
{
int temp=a[i];
a[i]=a[LENGTH-1-i];
a[LENGTH-1-i]=temp;
}
System.out.println("反转数组:"+Arrays.toString(a));
//选择法正排序:将每一位与之后所有数据进行比较,将最小的交换到该位置
for(int i=0;i<LENGTH-1;i++)
{
for(int j=i+1;j<LENGTH;j++)
{
if(a[j]<a[i])
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
System.out.println("正排序:"+Arrays.toString(a));
//冒泡法倒排序:从第一位开始,和下一位比较,小于则交换,直至最小的数据在最后一位
//重复该步骤,每次减少比较最后一位
for(int i=0;i<LENGTH-1;i++)
{
for(int j=0;j<LENGTH-1-i;j++)
{
if(a[j]<a[j+1])
{
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
System.out.println("倒排序:"+Arrays.toString(a));
/*题目二:复制数组
首先准备两个数组,他俩的长度是5-10之间的随机数,并使用随机数初始化这两个数组
然后准备第三个数组,第三个数组的长度是前两个的和
通过System.arraycopy 把前两个数组合并到第三个数组中
*/
int length1=(int)(Math.random()*5+5);
int length2=(int)(Math.random()*5+5);
int[] src1=new int[length1];//创建第一个数组
int[] src2=new int[length2];//创建第二个数组
int[] tar=new int[length1+length2];//创建第三个数组
//用随机数初始化数组
for(int i=0;i<length1;i++)
src1[i]=(int)(Math.random()*100);
for(int i=0;i<length2;i++)
src2[i]=(int)(Math.random()*100);
//合并俩数组至tar中
System.arraycopy(src1, 0, tar, 0, length1);
System.arraycopy(src2, 0, tar, length1, length2);
//打印数组
System.out.println("第一个数组:"+Arrays.toString(src1));
System.out.println("第二个数组:"+Arrays.toString(src2));
System.out.println("合并后数组:"+Arrays.toString(tar));
/*题目三:二维数组
定义一个5X5的二维数组。 然后使用随机数填充该二维数组
找出这个二维数组里,最大的那个值,并打印出其二维坐标
*/
int[][] matrix=new int[5][5];
int maxV,maxI,maxJ;
//初始化数组
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
matrix[i][j]=(int)(Math.random()*100);
}
}
//打印数组
for(int i=0;i<5;i++)
System.out.println(Arrays.toString(matrix[i]));
//逐个访问元素,找到最大值
maxV=matrix[0][0];
maxI=maxJ=0;
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
if(matrix[i][j]>maxV)
{
maxV=matrix[i][j];
maxI=i;
maxJ=j;
}
}
}
System.out.println("最大值是"+maxV);
System.out.println("坐标为["+maxI+"]["+maxJ+"]");
}
}import java.util.Arrays;
public class Array {