1.数组元素的赋值(杨辉三角、回形数等)
1-1杨辉三角
/*【提示】
1. 第一行有 1 个元素, 第 n 行有 n 个元素
2. 每一行的第一个元素和最后一个元素都是 1
3. 从第三行开始, 对于非第一个元素和最后一个元
素的元素。即:
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");
}
}
}