【发布时间】:2024-04-29 05:35:02
【问题描述】:
在格式为 YYYY-MM-DD 的字符串日期数组中使用二进制搜索算法时遇到问题
- key - 算法正在寻找的日期。
- *日期 - 字符串日期数组
- numRows - *(日期)中的元素数
int binarySearchDate(StrDate key, StrDate* dates, int numRows) {
int i, left = 0, mid, right, res = -1;
StrDate transformedKey, * dummy = dates;
transformKey(key, transformedKey);
right = numRows - 1;
while (left <= right) {
mid = left + (right - 1) / 2;
printf("key: %s date: %s\n", transformedKey, dummy[mid]);
if (strcmp(transformedKey, dummy[mid]) == 0)
res = 0;
// Check if key is present at mid
if (res == 0)
return mid;
// If key is bigger, ignore left half
if (strcmp(transformedKey, dummy[mid]) > 0)
left = mid + 1;
// If key is smaller, ignore right half
else
right = mid - 1;
}
return -1;
}
我的代码有什么问题吗?
【问题讨论】:
-
请显示minimal reproducible example,包括输入和预期与实际输出。
-
注意:更好的代码会调用
strcmp()一次并保存结果,而不是调用两次。
标签: c string date search binary