Anh (Chị) hãy cho biết đoạn chương trình sau thực hiện công việc gì?
int BinSearch (char *item,char *table[],int n, int (*Sosanh)(const char*,const char*)) {
int bot = 0, top = n - 1, mid, cmp;
while (bot < top) { mid = (bot + top) / 2;
if ((cmp = Sosanh(item,table[mid])) == 0) return mid;
else if (cmp < 0) top = mid - 1; else bot = mid + 1;
}
return -1;
}
int main() { char *cities[] = { “Boston”, “London”, “Sydney”, “Tokyo” };
cout << BinSearch (“Sydney”,cities,4,strcmp) << endl;
}
Trả lời:
Đáp án đúng: C
Đoạn chương trình cung cấp một hàm `BinSearch` thực hiện tìm kiếm nhị phân (Binary Search) trên một mảng các chuỗi ký tự. Hàm này nhận vào một chuỗi `item` cần tìm, một mảng các chuỗi `table`, kích thước mảng `n`, và một hàm so sánh `Sosanh` (trong trường hợp này là `strcmp`).
Trong hàm `main`, một mảng các chuỗi `cities` được khởi tạo. Sau đó, hàm `BinSearch` được gọi để tìm chuỗi "Sydney" trong mảng `cities`. Do đó, đoạn chương trình này thực hiện tìm kiếm một chuỗi trong mảng chuỗi ký tự.
Các lựa chọn khác không phù hợp vì:
- A, B: Chương trình không thực hiện sắp xếp mảng.
- D: Chương trình không đếm số lượng thành phần chứa chuỗi ký tự cho trước, mà chỉ tìm kiếm sự tồn tại của một chuỗi duy nhất.