logarithmicTime = (n) => {
return new Promise((resolve, reject) => {
startTest('logarithmicTimeStart')
const dataSet = buildArray(n)
const startingIndex = dataSet[0]
const endingIndex = dataSet[dataSet.length - 1]
const searchTarget = dataSet[0]
const runBinarySearch = (dataSet, target, start, end) => {
console.log('Running search:', dataSet, target, start, end)
if (dataSet.length === 2) {
console.log('Search target found:', dataSet[end] === target ? dataSet[end] : dataSet[start])
resolve(endTest('logarithmicTimeStart', 'logarithmicTimeEnd'))
}
const middle = Math.floor((dataSet[start] + dataSet[end]) / 2)
if (target === dataSet[middle]) {
console.log('Search target found:', dataSet[middle])
resolve(endTest('logarithmicTimeStart', 'logarithmicTimeEnd'))
}
if (target > dataSet[middle]) {
return runBinarySearch(dataSet, target, dataSet[middle], end)
}
if (target < dataSet[middle]) {
return runBinarySearch(dataSet, target, start, dataSet[middle])
}
}
return runBinarySearch(dataSet, searchTarget, startingIndex, endingIndex)
})
}