【问题标题】:How can I binary search a String date in a string of dates in C?如何在 C 中的日期字符串中对字符串日期进行二进制搜索?
【发布时间】:2024-04-29 05:35:02
【问题描述】:

在格式为 YYYY-MM-DD 的字符串日期数组中使用二进制搜索算法时遇到问题

  1. key - 算法正在寻找的日期。
  2. *日期 - 字符串日期数组
  3. 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


【解决方案1】:

mid = left + (right - 1) / 2; 更改为mid = left + (right - left) / 2;

【讨论】:

    最近更新 更多