我想知道tcl中的lsearch在后台使用哪种搜索算法。 另外,如果列表已排序并且我们没有在 lsearch 中给出选项 -sorted,它是否仍然使用二分搜索来执行搜索。 如果有任何方法可以提高 lsearch 的效率,请告诉我。
我尝试了不同的情况,但我仍然很困惑哪种方式最有效。
最佳答案
如果您不指定-sorted
,它将执行线性扫描,请注意,您可以使用-start
选项更改起始点,请参阅https://www.tcl-lang.org/man/tcl/TclCmd/lsearch.htm#M14 ,也使用 -sorted
表示精确匹配,而不是 glob 或 regexp。
如果您需要在大集合中搜索值,那么使用 Tcl 数组或字典可能会更有效,因为它们使用散列来快速找到精确匹配。
关于algorithm - tcl 中 lsearch 的默认算法以及改进其运行时间的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71689631/