在OrderedList中快速找到最近的更大元素到给定参数I.

时间:2015-07-21 11:58:49

标签: search

假设我们有一个带有int年的OrderedList。我必须找到第i年和第n年之间的年份,但是我很难找到比年份更大的最接近的元素iI需要比线性算法复杂度更快的东西(O( n))的

1 个答案:

答案 0 :(得分:1)

(猜测你的意思是按有序列表排序列表,因为有序列表在这里没有多大意义。否则在搜索之前对该列表进行排序。)

尝试二分搜索。你做的是以下几点:

  • 假设您有一个长度为n的列表,并且正在寻找值k
  • 将元素置于位置n / 2
  • 如果元素小于k,请从列表的右半部分开始,从n / 2开始到n
  • 结束
  • 如果元素大于k,请从列表的左半部分开始,从0开始,到n / 2结束
  • 如果元素等于k,请在此处结束。
  • 重复搜索,直到搜索的上限和下限相隔一个字段,或者您的元素等于k。在这种情况下,将该元素作为下限,然后将下一个元素作为上限。上限是您要查找的值。下限应该是低于或等于k的最高数。