顺序查找:
int[] arr = {5,11,23,35,51,64,72,85,88,90,98};
int target1 = 30;
int target2 = 72;
int count1 = 0;
int count2 = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == target1) {
System.out.println("找到了,在第" + (i + 1) + "个位置");
break;
}
count1++;
}
System.out.println("比较次数: " + count1);
for (int i = 0; i < arr.length; i++) {
if (arr[i] == target2) {
System.out.println("找到了,在第" + (i + 1) + "个位置");
break;
}
count2++;
}
System.out.println("比较次数: " + count2);
二分查找:
int[] arr = {5,11,23,35,51,64,72,85,88,90,98};
int target1 = 30;
int target2 = 72;
int count1 = 0;
int count2 = 0;
int left = 0;
int right = arr.length - 1;
int mid;
while (left <= right) {
mid = (left + right) / 2;
if (arr[mid] == target1) {
System.out.println("找到了,在第" + (mid + 1) + "个位置");
break;
} else if (arr[mid] < target1) {
left = mid + 1;
} else {
right = mid - 1;
}
count1++;
}
System.out.println("比较次数: " + count1);
left = 0;
right = arr.length - 1;
while (left <= right) {
mid = (left + right) / 2;
if (arr[mid] == target2) {
System.out.println("找到了,在第" + (mid + 1) + "个位置");
break;
} else if (arr[mid] < target2) {
left = mid + 1;
} else {
right = mid - 1;
}
count2++;
}
System.out.println("比较次数: " + count2);