Я пишу программу, которая ищет через английский словарь, используя как исчерпывающий, так и двоичный поиск. Я должен распечатать средние значения каждого из них. Вот код для обоих. Я действительно не думаю, что проблема заключается в поиске и findUsingBinarySearch.Получение NaN при вычислении прошедшего времени в Java
public static double measureAverageExhaustiveSearchTime(String[] queries, String[] array){
//Measures the average number of microseconds (µs) needed to find each query, using exhaustive search.
long startTime = System.currentTimeMillis();
for(int i = 0; i < queries.length; i++){
find(queries[i], array);
}
long endTime = System.currentTimeMillis();
double elapsedTime = (endTime - startTime);
return (double)((elapsedTime/1000000000.0)/queries.length);
}
public static double measureAverageBinarySearchTime(String[] queries, String[] array){
//Measures the average number of microseconds (µs) needed to find each query, using binary search.
long startTime = System.nanoTime();
for(int i = 0; i < queries.length; i++){
findUsingBinarySearch(queries[i], array);
}
long endTime = System.nanoTime();
double elapsedTime = (endTime - startTime);
return (double)((elapsedTime/1000000000.0)/queries.length);
//(double)(elapsedTime * 1000)/(queries.length);
}
Мой выход просто:
переборные: NaN секунды
бинарный поиск: NaN секунды
FAILED переборные: NaN секунды
FAILED бинарного поиска : NaN секунд
Когда я использовал гораздо меньший файл, я получил это!
переборе: 0,0 секунды
бинарного поиска: 2.1e-6 секунд
FAILED переборе: 1.0E-10 секунд
FAILED бинарного поиска: 1.4E-6 секунды
Вот как я вызываю метод, используя словарь как оба параметра, поскольку я пытаюсь проверить, сколько времени занимает массив к самому двоичному поиску. Я также использую копию словаря с «zzz», прилагаемую к каждому слову, чтобы облегчить неудачный двоичный и исчерпывающий поиск.
System.out.println("EXHAUSTIVE SEARCH: ");
System.out.println(measureAverageExhaustiveSearchTime(dictionary, dictionary)+" seconds");
System.out.println("BINARY SEARCH: ");
System.out.println(measureAverageBinarySearchTime(dictionary, dictionary)+" seconds");
System.out.println("FAILED EXHAUSTIVE SEARCH: ");
System.out.println(measureAverageExhaustiveSearchTime(dictionaryzzz, dictionary) + " seconds");
System.out.println("FAILED BINARY SEARCH: ");
System.out.println(measureAverageBinarySearchTime(dictionaryzzz, dictionary)+" seconds");
Я не уверен, как это исправить.
Возможно ли, что запросы [] представляют собой пустой массив? – FuzzyBunnySlippers
Извините, у меня не было достаточно контекста. В моем основном методе я называю средние исчерпывающие/бинарные методы поиска в моем словаре, ища каждое слово в словаре внутри словаря. :) – raine
Какова ценность этого '/ queries.length'? (Я не имею в виду, что это хорошо, но что такое 'length'?) –