1、已知一个升序数组,要求插入一个元素,该数组顺序依然是升序,比如
[10,12,45,90],添加23后,数组为 [10,12,23,45,90]
public class homework02 {
public static void main(String[] args) {
//思路:定位 + 扩容
int insertNum = 23;
int[] arr = new int[]{10,12,45,90};
int index = -1;//要添加数据的位置
//1.定位
for (int i = 0; i < arr.length; i++) {
if(insertNum <= arr[i]){
index = i;
break;//找到位置后退出
}
}
if (index == -1) {//说明没有找到位置
index = arr.length;
}
//2.扩容
//创建新数组
int[] arrNew = new int[arr.length + 1];
for(int i = 0,j = 0;i < arrNew.length;i++){
if(i != index){
arrNew[i] = arr[j];
j++;
}else{
arrNew[j] = insertNum;
}
}
//3.清除
arr = arrNew;
System.out.println("========输出添加数据后的数组==============");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
}
}
2、随机生成10个整数(1-100范围),保存到数组,并倒序打印,以及求平均值,求最大值, 和最大值下标并查找里面是否有8
public class homework03 {
public static void main(String[] args) {
//1.随机生成10个整数(1-100范围),保存到数组
Random rand = new Random();
int[] arr = new int[10];
for (int i = 0; i < arr.length; i++) {
int num = rand.nextInt(100);
arr[i] = num;
}
System.out.println("======输出随机生成的数组=======");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
System.out.println();
//2.倒序打印(从大到小)
int temp = 0;
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]) {
temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println("======倒序排列=======");
for(int i = 0;i < arr.length;i++){
System.out.print(arr[i] + "\t");
}
}
}