Scr*_*kie 2 java list binary-search
我试图从列表中找到大于某个值的值(在我的例子中已知).
例:
特定
list = [1, 2, 5, 10, 15]; //list is sorted
Run Code Online (Sandbox Code Playgroud)
查找大于X(=7在本例中)的值.
期望的结果=返回值为的列表= [10, 15]
我尝试使用java二进制搜索,就像
int index = Collections.binarySearch(list, X);
Run Code Online (Sandbox Code Playgroud)
我的计划是找到索引(of X)然后返回索引后的所有元素.
但索引返回否定,我明白因为7不在列表中.
还有其他方法吗?有人请建议.
如果列表的排序比Collection#binarySearch将返回搜索键的索引,如果它包含在列表中; 否则,( - (插入点) - 1).你可以计算insert_point的开始索引,如下所示:
index= -(insertion_point) - 1
-(insertion_point)= index+1
insertion_point=-(index+1)
Run Code Online (Sandbox Code Playgroud)
获得开始索引后List,您可以应用subList方法获得大于X的结果列表.
Integer[] values = {1, 2, 5, 10, 15};
List<Integer> list = new ArrayList<>(Arrays.asList(values));
int X = 7;
int index = Collections.binarySearch(list, X);
int insertion_point = -(index+1); // As calculated above.
List<Integer> res = list.subList(insertion_point, list.size());
System.out.println(res);
Run Code Online (Sandbox Code Playgroud)
产出:[10,15]
| 归档时间: |
|
| 查看次数: |
5368 次 |
| 最近记录: |