假设我有以下类的数组,按y升序排列:
public class Obj { public int x; public int y; }
如何找到在对数(N)时间中给出的最小和最大范围内,y值在数组中的Obj项数?
我曾考虑过使用Binary Search通过binarySearch来查找min和max元素的位置并减去,但是那不是2 log(n),因为它搜索了两次?
public static int getNumberOfItems(Obj[] a, int min, int max) {
当要求您及时执行某项操作log(n)时,通常表示O(log(n))。
log(n)
O(log(n))
如果是这种情况,则值得注意的是O(2 log(n)) == O(log(n)),即两者是同一件事。
O(2 log(n)) == O(log(n))
有关big- oh表示法的更多背景,请参阅Wikipedia页面。