我正在学习二进制搜索树,并想比较两种插入方法的性能(基本概念相同,但实现方式略有不同)。
我在调用方法前后存储了时间(以纳秒为单位),并打印出差异。这样,即使颠倒了调用方法的顺序,执行first的方法所需的时间也总是更长。
公用代码:-
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] terms = Arrays.stream(br.readLine().split("\\s+")).mapToInt(Integer::parseInt).toArray();
BST tree = new BST();
过程1 :-
long t1 = System.nanoTime();
Arrays.stream(terms).forEach(tree::insert);
long t2 = System.nanoTime();
tree = new BST();
long t3 = System.nanoTime();
Arrays.stream(terms).forEach(tree::insert1);
long t4 = System.nanoTime();
System.out.println("insert ->" + (t2 - t1) + "\ninsert1->" + (t4 - t3));
程序2 :-
long t1 = System.nanoTime();
Arrays.stream(terms).forEach(tree::insert1);
long t2 = System.nanoTime();
tree = new BST();
long t3 = System.nanoTime();
Arrays.stream(terms).forEach(tree::insert);
long t4 = System.nanoTime();
System.out.println("insert1->" + (t2 - t1) + "\ninsert ->" + (t4 - t3));
输入:-12 23 34 45 56 67 78 89 90
输出
程序1:-
insert ->2155125
insert1->431351
程序2:-
insert1->2608819
insert ->546649
如何解决此问题?