Какова сложность size () для представления порций TreeSet в Java
интересно, какова сложность времениsize()
для части просмотра TreeSet.
Скажи яm добавление случайных чисел для установки (и мне наплевать на дубликаты):
final TreeSet tree = new TreeSet();
final Random r = new Random();
final int N = 1000;
for ( int i = 0; i < N; i++ ) {
tree.add( r.nextInt() );
}
и теперь ям вудер, что такое сложность дляsize()
звонки как:
final int M = 100;
for ( int i = 0; i < M; i++ ) {
final int f = r.nextInt();
final int t = r.nextInt();
System.out.println( tree.headSet( t ).size() );
System.out.println( tree.tailSet( f ).size() );
if ( f > t ) {
System.out.println( tree.subSet( t, f ).size() );
} else {
System.out.println( tree.subSet( f, t ).size() );
}
}
AFAIK сложность,tree.headSet( t )
tree.tailSet( f )
а такжеtree.subSet( f, t )
O (LG N),set.size()
это O (1), но как насчетsize()
методы выше? У меня такое плохое предчувствие, чтоs O (K) где K - размер выбранного подмножества.
Может быть, если есть какой-то обходной путь, чтобы найти индекс некоторого элемента в наборе, этого будет достаточно, потому что, если я могу получитьti = indexOf(f)
, скажем, O (LG N), чем это именно то, что мне нужно.