面试常考<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/21459194/1619171541400-0eb4795b-4610-4a13-ab34-8b27c2b6cfd1.png#align=left&display=inline&height=332&margin=%5Bobject%20Object%5D&name=image.png&originHeight=442&originWidth=948&size=182142&status=done&style=shadow&width=711)<br /> <br /> *********************************************************************<br /> /*<br /> * 使用二维数组打印10行杨辉三角<br /> * 提示:<br /> * 1.第一行有1个元素,第n行n个元素<br /> * 2.每一行的第一个元素和最后一个元素都是1<br /> * 3.从第行开始,对于对于非第一个元素和最后一个元素的元素。即:<br /> * yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];<br /> * 1.声明并初始化二维数组<br /> * 2.给数组的元素赋值<br /> * 3.遍历二维数组<br /> */
package Arry;
public class YangHui {
public static void main(String[] args) {
//1.声明并初始化二维数组
int[][] yanghui = new int[10][];
//2.给数组的元素赋值
for (int i = 0; i < yanghui.length; i++) {
yanghui[i] = new int[i + 1];
//2.1给首末元素赋值
yanghui[i][0] = yanghui[i][i] = 1;
//2.2给每行的非首末元素赋值
//if(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();
}
}
}
*
*
/
算法的考查:求数值型的数组中元素的最大值、最小值、平均数、总和等
定义一个int型的一维数组,包含10个元素,分别赋一些随机数。
然后求出所元素的最大值,最小值,和值。
要求:所随机数都是两位数
随机数:[10,99] 公式 (int)(Math.random() (99 - 10 + 1)+ 1)
/
package Arry;
public class test1 {
public static void main(String[] args){
int arr [] = new int [10];
//给数组赋随机数
for(int i = 0;i
}
//遍历数组
for(int i = 0;i
}
System.out.println();
//求数组元素的最大值
int max = 0;
for(int i = 0;i
}
}
System.out.println(“最大值为”+max);
//求数组元素的最小值
int mix = arr[0];
for(int i = 0;i
max = arr[i];
}
}
System.out.println(“最小值为”+max);
//求数组元素的总和
int sum = 0;
for(int i = 0;i
}
System.out.println(“总和为”+sum);
//求数组元素的平均数
int num = sum/arr.length;
System.out.println(“平均数为”+num);
}
}
**
/使用简单数组
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
/
package Arry;
public class ArrayTest {
public static void main(String[] args){
int array1[] = new int[]{2,3,5,7,11,13,17,19};
int array2[];
for(int i = 0;i<array1.length;i++){
System.out.print(array1[i]+ "\t");
}
System.out.println();
array2= array1;
for(int i = 0;i<array2.length;i++){
if(i % 2 == 0){
array2[i]=i;
}
System.out.print(array2[i]+"\t");
}
System.out.println();
//打印array1
for(int i = 0;i<array1.length;i++){
System.out.print(array1[i]+ "\t");
}
}
}
*
*
/
算法的考查: 数组的复制、反转、查找(线性查找、二分查找
/
package Arry;
public class ArrayTest2 {
public static void main(String[] args) {
String[] arr = new String[] { “JJ”, “MM”, “DD”, “BB”, “GG”, “SS”, “OO” };
// 数组的复制(区别于数组变量的赋值:arr1 = arr)
//数组的复制是创建了一个新的数组,并一一赋值。
String[] arr1 = new String[arr.length];
for (int i = 0; i < arr.length; i++) {
arr1[i] = arr[i];
}
**
// 数组的反转
// 方式一:
// for(int i = 0;i
// arr[i] = arr[arr.length - i-1];
// arr[arr.length -i-1] = temp;
// }
// //遍历
// for(int i = 0;i
//
// }
*
// 查找(搜索)
// 线性查找
String dest = “BB”;
boolean isFlag = true;
for (int i = 0; i < arr.length; i++) {
if (dest.equals(arr[i])) {
System.out.println(“找到了指定的元素,位置为:” + i);
isFlag = false;
break;
}
}
if(isFlag==true){
System.out.println(“抱歉没找到”);
}
// 二分查找:更快
//前提:所要查找的数组必须序
int[]arr2 = new int[]{-98,-34,2,34,54,66,76,88,97,213,342,546,768,990};
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(“找到了指定的元素,位置为:” + middle);
isFlag1 = false;
break;
}else if(arr2[middle] > dest1){
end = middle -1;
}else{
head = middle + 1;
}
}
}
}
*
*
*
/
数组的冒泡排序
*/
package Arry;
public class BubbleSortTest {
public static void main(String[] args) {
int[] arr = new int[]{43,21,44,-45,77,87,567,-132,88,44,21,90};
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.out.print(arr[i]+"\t");
}
}
}
*