// Big O
// const nemo = ['nemo'];
// const everyone = ['dory', 'bruce', 'marlin', 'nemo', 'gill', 'bloat', 'nigel', 'squirt', 'darla', 'hank'];
// const large = new Array(10000).fill('nemo');
// function findNemo(array) {
// for (let i = 0; i < array.length; i++) {
// console.log('running'); // Big O rule 1 (Worst case)
// if (array[i] === 'nemo' ) {
// console.log('Found Nemo');
// break; // Big O rule 1 (Worst case)
// }
// }
// }
// findNemo(everyone); // O(n) --> Linear time
// const boxes = [0,1,2,3,4,5];
// function compressTwoBoxes(boxes) {
// console.log(boxes[0]);
// console.log(boxes[1]);
// }
// compressTwoBoxes(boxes);
// Exercise Big O calculation
// What is the Big O of the below function? (Hint, you may want to go line by line)
// function funChallenge(input) {
// let a = 10; // O(1)
// a = 50 + 3; // O(1)
// for (let i = 0; i < input.length; i++) { // O(n)
// anotherFunction(); // O(n)
// let stranger = true; // O(n)
// a++; // O(n)
// }
// return a; // O(1)
// }
// Exercise Big O calculation 2
// What is the Big O of the below function? (Hint, you may want to go line by line)
// function anotherFunChallenge(input) {
// let a = 5; // O(1)
// let b = 10; // O(1)
// let c = 50; // O(1)
// for (let i = 0; i < input; i++) { // O(n)
// let x = i + 1; // O(n)
// let y = i + 2; // O(n)
// let z = i + 3; // O(n)
// }
// for (let j = 0; j < input; j++) { // O(n)
// let p = j * 2; // O(n)
// let q = j * 2; // O(n)
// }
// let whoAmI = "I don't know"; // O(1)
// }
// Big O = 4 + 7n = O(n)
// Big O rule 2 (remove constants)
// function printFirstItemThenFirstHalfThenSay100Times(items) {
// console.log(items[0]);
// var middleindex = Math.floor(items.length / 2);
// var index = 0;
// while (index < middleIndex) {
// console.log(items[index]);
// index++;
// }
// for (var i = 0; i < 100; i++) {
// console.log('hi');
// }
// }
// Result = O(1 + n / 2 + 100) --> O(n)
// Big O rule 3 (Different terms for inputs)
// function compressBoxesTwice(boxes, boxes2) {
// boxes.forEach(function(boxes) {
// console.log(boxes);
// });
// boxes2.forEach(function(boxes) {
// console.log(boxes);
// });
// }
// Result = O(a + b)
// O(n^2)
// const boxes = ['a', 'b', 'c', 'd', 'e'];
// function logAllPairsOfArray(array) {
// for (let i = 0; i < array.length; i++) {
// for (let j = 0; j < array.length; j++) {
// console.log(array[i], array[j]);
// }
// }
// }
// logAllPairsOfArray(boxes);
// Big O rule 4 (Drop non dominants)
function printAllNumbersThenAllPairSums(numbers) {
console.log("these are the numbers: ");
numbers.forEach(function(number) {
console.log(number);
});
console.log("and these are their sums: ");
numbers.forEach(function(firstNumber) {
numbers.forEach(function(secondNumber){
console.log(firstNumber + secondNumber);
});
});
}
printAllNumbersThenAllPairSums([1, 2, 3, 4, 5]); // O(n^2)