在动态数组中使用二进制搜索搜索 typedef struct DATE

如何解决在动态数组中使用二进制搜索搜索 typedef struct DATE

我的老师希望我使用二分搜索在动态数组中搜索 typedef struct DATE d,我不知道该怎么做,我认为二分搜索的目的是让事情变得更简单和更快,我不知道不明白在这里做这件事的意义......

这里是 typedef struct date

typedef struct date { /////////////////////////////////DATE
  int year;
  int month;
  int day;
} DATE;

以及我目前使用的功能

CALENDER_DAY *find_date(int i,ESTUdio *est,DATE di){// suppose to be with binary search
  CALENDER_DAY *pcurrent=est->agenda[i].d; //it finds the calendar where I want to start looking 
  int size=est->agenda[i].sized;           //currently the size is 365 because I started with a year
  for (int k =0; k<size ; k++) {
    if(pcurrent->d.day==di.day && pcurrent->d.month==di.month && pcurrent->d.year==di.year){
      return pcurrent;
    }
  pcurrent++;
  }

  //realoc_memory(est,di.year,i);
}

解决方法

如果日期已经在 d[] ...

要执行二进制搜索,需要一些伪代码来启动 OP。

int lo = 0;
int hi = size - 1;
while (lo < hi) {
  int mid = lo + (hi-lo)/2;  // Get mid-pint without overflow
   
  // Compare mid with reference,return 0 on match,1 when first > second,else -1
  int cmp = tbd_compare_fuction(&d[mid],di);
  if (cmp == 0) return &d[mid];  // found !
  if (cmp > 0) hi = mid - 1;
  else lo = mid + 1;
}
// Not found

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?