【发布时间】:2015-04-29 21:14:16
【问题描述】:
我目前正在做我的家庭作业,我几乎完成了,但我似乎不太了解我任务的最后一部分。这是任务描述,粗体字是我不明白的:
编写一个保存约会簿的程序。创建一个类 Appointment,其中存储约会的描述、约会日期、开始时间和结束时间。您的程序应该将约会保存在排序的向量中。用户可以添加约会并打印给定日期的所有约会。 添加新约会时,使用二分搜索查找应在向量中插入的位置。如果与其他约会冲突,请勿添加。
我上周刚刚了解了线性/二进制搜索算法,现在我无法看到我应该在这里做什么。通过二分搜索,我可以在例如向量中找到一个值(就像我的情况一样),对吧?那么如何确定应该在向量中插入新添加的约会的位置?什么应该告诉我它应该插入到哪里?我也有点困惑,即使向量可能还没有元素,我也必须使用二进制搜索来查找必须插入约会的位置。它首先说“添加约会时”,然后还说“..找到应该插入的位置”,这与我的解决方案有点冲突,因为我将新添加的约会推回向量,但描述问我首先找到应该添加然后插入的位置。听起来令人困惑,但我现在无法更好地表述它。
我不是要求直接代码,这就是为什么我到目前为止还没有发布我的解决方案。我只是想澄清一下我应该用那个二进制搜索做什么。谢谢
【问题讨论】:
-
您不仅可以使用二分搜索在向量中定位特定值,还可以定位值所在的位置如果它已经在其中。 (放弃你的“解决方案”——你不应该使用
push_back,所以它根本不是一个解决方案。) -
@molbdnilo 好的,谢谢。我也不确定
push_back,所以我可能不得不改用std::vector::insert成员函数? -
是的,你应该这样做。有关此任务的可能逻辑,请参阅我的答案。
标签: c++ vector task binary-search