Skip to content

Commit 9d9fa8d

Browse files
committed
add compare method
1 parent 07b7857 commit 9d9fa8d

1 file changed

Lines changed: 46 additions & 1 deletion

File tree

src/class01/Code06_BSAwesome.java

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
public class Code06_BSAwesome {
44

5+
// 课上的代码
56
public static int getLessIndex(int[] arr) {
67
if (arr == null || arr.length == 0) {
7-
return -1; // no exist
8+
return -1;
89
}
910
if (arr.length == 1 || arr[0] < arr[1]) {
1011
return 0;
@@ -28,4 +29,48 @@ public static int getLessIndex(int[] arr) {
2829
return left;
2930
}
3031

32+
// 验证得到的结果,是不是局部最小
33+
public static boolean isRight(int[] arr, int index) {
34+
if (arr.length <= 1) {
35+
return true;
36+
}
37+
if (index == 0 && arr[index] < arr[index + 1]) {
38+
return true;
39+
}
40+
if (index == arr.length - 1 && arr[index] < arr[index - 1]) {
41+
return true;
42+
}
43+
return arr[index] < arr[index - 1] && arr[index] < arr[index + 1];
44+
}
45+
46+
// 为了测试
47+
// 生成相邻不相等的数组
48+
public static int[] generateRandomArray(int maxSize, int maxValue) {
49+
int[] arr = new int[(int) (Math.random() * maxSize) + 1];
50+
arr[0] = (int) (Math.random() * maxValue) - (int) (Math.random() * maxValue);
51+
for (int i = 1; i < arr.length; i++) {
52+
do {
53+
arr[i] = (int) (Math.random() * maxValue) - (int) (Math.random() * maxValue);
54+
} while (arr[i] == arr[i - 1]);
55+
}
56+
return arr;
57+
}
58+
59+
// 为了测试
60+
public static void main(String[] args) {
61+
int testTime = 500000;
62+
int maxSize = 30;
63+
int maxValue = 100;
64+
System.out.println("测试开始");
65+
for (int i = 0; i < testTime; i++) {
66+
int[] arr = generateRandomArray(maxSize, maxValue);
67+
int ans = getLessIndex(arr);
68+
if (!isRight(arr, ans)) {
69+
System.out.println("出错了!");
70+
break;
71+
}
72+
}
73+
System.out.println("测试结束");
74+
}
75+
3176
}

0 commit comments

Comments
 (0)