如何解决在动态数组中使用二进制搜索搜索 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 举报,一经查实,本站将立刻删除。