import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
public class BSTSearchTimer {
int [] n = {10000, 50000, 100000, 250000};
Random rand = new Random();
public static void main(String[] args) throws IOException{
BSTSearchTimer timer = new BSTSearchTimer();
timer.runBSTSearchTimer();
}
public void runBSTSearchTimer() throws IOException{
PrintWriter out = new PrintWriter( new FileWriter(tree2.csv));
int reps = 10000; // the number of searches that we will do on the tree
for (int i = 0; i < n.length; i++){
BinarySearchTree<Long> longBST = new BinarySearchTree<Long>();
boolean success = true;
int numOfElements = n[i];
while (longBST.size() < numOfElements){
success = longBST.add(rand.nextLong());
while (!success){ // should keep attempting to add values until success is true
success = longBST.add(rand.nextLong());
}
}
long start = System.currentTimeMillis(); // start the timer for searching
for ( int j = 0; j < reps; j++){ // search rep times
longBST.find(rand.nextLong());
}
long end = System.currentTimeMillis(); // end timer for searching tree
double time = end-start;
System.out.printf(%d, %f\n, longBST.size(), time);
out.printf(%d, %f\n, n[i], time);
}
out.close();
}
}
Toen ik dit programma wordt verondersteld te worden het maken van 4 verschillende maten bomen uit te voeren: 10000, 50000, 100000, 250000 Ik weet dat de snelheid efficiency op zoek BSTS wordt verondersteld O (log n), maar ik krijg de volgende nummers:
bij het doen van 10.000 zoekopdrachten krijg ik deze nummers: (eerste kolom is de grootte van de boom, de tweede is de tijd die nodig was om het zoeken te doen)
10000, 9.000000
50000, 3.000000
100000, 4.000000
bij het doen van 100.000 zoekopdrachten:
10000, 41.000000
50000, 31.000000
100000, 40.000000
250000, 74.000000
Eventuele tips worden gewaardeerd.













