【发布时间】:2021-01-12 11:00:23
【问题描述】:
我必须在已经排序的字符串列表中插入一个字符串,实现这一点的最佳方法是找到要插入的确切位置,而不必对所有列表进行排序,也不需要预先添加字符串。我只需要找到要插入的位置。
我确实有一个比较 2 个字符串的函数 compare(first-string , second-string) 如果第一个字符串必须放在第二个字符串之前,这个函数给我 true 以其他方式。预计会用到这个功能。
在我的场景中使用的 List 不是 c++ std::list 而是一个处理列表某些功能的自定义类。
【问题讨论】:
-
对列表最好的办法就是遍历它并比较每个元素
-
只需搜索列表,直到找到与插入字符串相比“更高”的第一个元素,并将其放在该元素之前(即前一个元素之后)。
-
由于我们不知道您是如何制作自定义排序列表的(尽管您可以怀疑一个属性:它可能是“排序的”),因此我们无法回答这个问题。 IE。我们需要确切了解您的列表是如何构建和管理的,以便对如何导航到插入点并执行操作有任何有用的见解。
-
我认为这更像是一个算法问题,而不是一个编码问题。 OP 不要求代码,而是抽象的“如何”,因此不需要实际的实现和代码来回答这个问题。
-
这能回答你的问题吗? binary search on a single linked list
标签: c++ list binary-search insertion-sort insertion-order