如何在 C 中的日期字符串中对字符串日期进行二进制搜索?
Posted
技术标签:
【中文标题】如何在 C 中的日期字符串中对字符串日期进行二进制搜索?【英文标题】:How can I binary search a String date in a string of dates in C? 【发布时间】:2021-10-05 19:50:12 【问题描述】:在格式为 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()
一次并保存结果,而不是调用两次。
【参考方案1】:
将mid = left + (right - 1) / 2;
更改为mid = left + (right - left) / 2;
【讨论】:
以上是关于如何在 C 中的日期字符串中对字符串日期进行二进制搜索?的主要内容,如果未能解决你的问题,请参考以下文章