如何在 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 中的日期字符串中对字符串日期进行二进制搜索?的主要内容,如果未能解决你的问题,请参考以下文章

如何在角度 4 材料排序中对日期/时间列进行排序?

如何在 RecyclerView 中对字符串元素进行排序?

c语言,如何进行日期格式转换??

是否可以在 ExtJS 3.2 中对日期进行自定义排序

pandas中对日期型数据进行处理

如何在不同的语言环境中对日期对象进行 strftime? [复制]