杨辉三角
1.输出换行和空格
- System.out.println(); 换行
- System.out.print(“ ”);空格
2.遍历
for (int i = 0; i < yanghui.length; i++) {
for (int j = 0; j < yanghui[i].length; j++) {
}
}
j小于一维数组的长度
3.遍历范围
for (int i = 0; i < yanghui.length; i++) {
for (int j = 1; j < yanghui[i].length - 1; j++) {
yanghui[i][j] = yanghui[i - 1][j - 1] + yanghui[i - 1][j];
}
}
为了输出杨辉三角,需要遍历从第二列开始的(j=1),到倒数第二列(yanghui[i].length-1)
数组复制
1.字符串的拼接
System.out.print(array1[i]+“\t”); 正确
System.out.print(array1[i]+‘\t’); 错误
可以拼接String不能Char
2.巧用length
array2 = new int[8];
array2 = new int[array1.length];
数组反转
1.for循环
for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
String temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
首先确定ij的起始值,循环条件只能有一个。
二分法查找
1.数组下标和值搞混
System.out.println();
int arr2[] = new int[] { -98, -34, 2, 34, 54, 66, 79, 105, 210, 333 };
int dest1 = 34;
int low = 0;
int high = arr2.length - 1;
boolean isFlag1 = true;
while (low <= high) {
int mid = (low + high) / 2;
if (dest1 == arr2[mid]) {
System.out.println("找到了,在第" + mid + "位置");
isFlag1 = false;
break;
} else if (dest1 > arr2[mid]) {
low = mid + 1;
} else {
high = mid - 1;
}
}
if (isFlag1) {
System.out.println("没找到");
}
arr2[mid]正确
mid 错误
2.标记逻辑很乱
boolean isFlag1 = true; 默认为true
3.mid的作用
需要用mid来确定坐标,因此需要随着循环修改,需要放进循环内
4.while
需要while循环来操作low和high,而非普通的遍历
冒泡排序
1.遍历容易错的地方
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i] + "\t");
}