📄 iterativebinarylistsearcher.java
字号:
package com.wrox.algorithms.bsearch;import com.wrox.algorithms.lists.List;import com.wrox.algorithms.sorting.Comparator;/** * A {@link ListSearcher} that uses iteration. * */public class IterativeBinaryListSearcher implements ListSearcher { /** The strategy to use for key comparison. */ private final Comparator _comparator; /** * Constructor. * * @param comparator The strategy to use for value comparison. */ public IterativeBinaryListSearcher(Comparator comparator) { assert comparator != null : "comparator can't be null"; _comparator = comparator; } public int search(List list, Object value) { assert list != null : "list can't be null"; int lowerIndex = 0; int upperIndex = list.size() - 1; while (lowerIndex <= upperIndex) { int index = lowerIndex + (upperIndex - lowerIndex) / 2; int cmp = _comparator.compare(value, list.get(index)); if (cmp == 0) { return index; } else if (cmp < 0) { upperIndex = index - 1; } else { lowerIndex = index + 1; } } return -(lowerIndex + 1); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -