n 位學生身高由小到大存於一維陣列,以身高為關鍵字查詢學生相關資訊。
int binarySearch(int[] height, int target) {
int low = 0, high = height.length - 1;
while (low <= high) {
int mid = low + (high - low) / 2;
if (height[mid] == target) return mid; // 找到,返回索引
else if (height[mid] < target) low = mid + 1;
else high = mid - 1;
}
return -1; // 未找到
}
若學生資訊存於結構體/類陣列 Student[] students 與身高陣列同序:
int idx = binarySearch(heights, queryHeight);
if (idx != -1) {
Student s = students[idx];
System.out.println("姓名:" + s.name + " 年齡:" + s.age + " 城市:" + s.city);
} else {
System.out.println("查無此身高學生");
}
lower_bound/upper_bound 找到區間 [L, R)。auto range = equal_range(heights.begin(), heights.end(), target);
for (auto it = range.first; it != range.second; ++it) {
int idx = it - heights.begin();
printStudent(students[idx]);
}