冒泡排序

1
2
3
4
5
6
7
8
9
10
11
int[] arr = {24, 69, 80, 57, 13};
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;
}
}
}

查找

在java中,我们常用的查找有两种

  1. 顺序查找Sequence
  2. 二分查找
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//思路分析
//1.定义一个字符串数组
//2.接收用户输入,遍历数组,逐一比较,如果有,则提示信息,并退出
//
//定义一个字符串数组
String[] names = {"白眉鹰王", "金毛狮王", "紫衫龙王", "青翼蝠王"};
Scanner myScanner = new Scanner(System.in);

System.out.println("请输入名字");
String findName = myScanner.next();

//遍历数组,逐一比较,如果有,则提示信息,并退出
//一个经典的方法
int index = -1;
for (int i = 0; i < names.length; i++) {
//比较 字符串比较 equals
if (findName.equals(names[i])) {
System.out.println("找到 " + findName);
System.out.println("下标为= " + i);
index = i;
break;
}
}

if (index == -1) {
System.out.println("没有找到 " + findName);
}

二维数组的使用

TwoDimensionalArray

输出二维数组

0 0 0 0 0 0
0 0 1 0 0 0
0 2 0 3 0 0
0 0 0 0 0 0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//什么是二维数组
//1.从定义形式上看 int[][]
//2.可以这样理解 原来的一维数组的每个元素是一维数组
int[][] arr = {{0,0,0,0,0,0},{0,0,1,0,0,0},{0,2,0,3,0,0},{0,0,0,0,0,0}};

//输出二维图形
for (int i = 0; i < arr.length; i++) {

for (int j = 0; j < arr[i].length; j++) {

System.out.print(arr[i][j] + " ");
}
System.out.println();

}
1
2
3
4
5
6
7
//关于二维数组的关键概念
//(1)
System.out.println("二维数组的元素个数为" + arr.length);
//(2) 二维数组的每个元素是一维数组,所以如果需要得到每个一维数组的值
// 还需要再次遍历
//(3) 如果我们要访问第i+1个一维数组的第j+1个值 arr[i][j]
System.out.println("第3个一维数组的第4个值=" + arr[2][3]);

二维数组的内存原理图

image-20220324214005204

动态初始化-列数不确定

image-20220324215731976

1
2
3
4
5
6
7
8
9
10
11
int[][] arr = new int[3][];	//创建 二维数组,一共有3个一维数组,但是每个一维数组还没有开数据空间
for (int i = 0; i < arr.length; i++) {
//给每个一维数组开空间 new
//如果没有给一维数组 new 那么 arr[i]就是Null
arr[i] = new int[i + 1];

//遍历一维数组,并给一维数组的每个元素赋值
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = i + 1;
}
}

杨辉三角

1
2
3
4
5
6
7
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int[][] yangHui = new int[10][];
for (int i = 0; i < yangHui.length; i++) {
//开空间
yangHui[i] = new int[i+1];
//赋值
for (int j = 0; j < yangHui[i].length; j++) {
//每一行的第一个元素和最后一个元素都是1
if (j == 0 || j == yangHui[i].length - 1) {
yangHui[i][j] = 1;
} else {
yangHui[i][j] = yangHui[i-1][j] + yangHui[i-1][j-1];
}
}
}
//输出杨辉三角
for (int i = 0; i < yangHui.length; i++) {
for (int j = 0; j < yangHui[i].length; j++) {
System.out.print(yangHui[i][j] + "\t");
}
System.out.println();
}