# #100Devs

"But that was the shit that I prayed about I thank God I made it out
Damn it feels good to go pick up my momma and take her out
Lil Tony got paper now all in my bank account, and it ain't shit to debate about"

!templates

# 4 More Classes

Building Hitlists & How To Get A Job

# FRIDAY TEA

6:00pm ET in Classroom

# Daily Standup

(Mon-Fri 6pm EST)

# Object or Array?

## Object Makes The Most Sense

``````let stockTrader = {
firstName: 'Bob',
location: 'New York, New York, USA',
yoe: 1,
}``````

# Object or Array?

## Array Makes The Most Sense

``````let tslaPurchasePrices =
[208.17, 205.05, 217.57, 220.48]``````

# Big-O notation mathematically describes the complexity of an algorithm in terms of time and space

## BUT WHY?

All computers, environments, ect... are different

# O(1)

For all inputs to our algorithm there is and will always be only one operation required

• Order 1
• Constant Time

# O(1) Example

No matter how many inputs are located in num there will only ever be one operation needed!

``````const nums = [1,2,3,4,5]
const firstNumber = nums[0]``````

# O(N)

For all inputs to our algorithm there will be one

operation per input

• Order n
• Linear
• Linear Scailing

# O(N) Example

Here we sum the numbers in the array. We have to add each number to a running sum, so we have to operate on each one. This means one operation per input.

``````const nums = [1,2,3,4,5]
let sum = 0
for(let num of nums){
sum += num
}``````

# O(1) VS O(N)

### Summing function for a sorted, contiguous array of integers that starts with the number 1? Could easily be O(n) but...

``````const sumContiguousArray = function(ary){
//get the last item
const lastItem = ary[ary.length - 1]
//Gauss's trick
return lastItem * (lastItem + 1) / 2
}
const nums = [1,2,3,4,5]
const sumOfArray = sumContiguousArray(nums)``````

# O(N^2)

Text

``````const hasDuplicates = function(num){
for(let i = 0; i < nums.length; i++){
const thisNum = nums[i]
for(let j = 0; j < nums.length; j++){
if(j !== i){
const otherNum = nums[j]
}
}
if(otherNum === thisNum) return true
}
return false
}

const nums = [1,2,3,4,5,5]
hasDuplicates(nums) //true``````

# O(N^2)

Here we’re iterating over our array, which we already know is O(n), and another iteration inside it, which is another O(n). For every item in our list, we have to loop our list again to calculate what we need.

# O(LOG N)

## Logarithmic Time As you loop your operations are halved

Divide and Conquer?

# all the bids

Text

``````const findMaxBid = function(bids){
let maxBid = bids[0],
minBid = bids[0]
for(let i = 0; i < bids.length; i++){
for(let j = 0; j < bids.length; j++){
if(bids[i] > bids[j] && bids[i] > maxBid ){
maxBid = bids[i]
}else if(bids[i] < bids[j] && bids[i] < minBid){
minBid = bids[i]
}
}
}
return [minBid, maxBid]
}

const allBids = [2,7,3,1,4,5,5]
console.log(findMaxBid(allBids))``````

# Finding the max bid

Text

``````const findMaxBid = function(bids){
let maxBid = bids[0]
for(let i = 0; i < bids.length; i++){
if(bids[i] > maxBid){
maxBid = bids[i]
}
}
return maxBid
}

const allBids = [1,2,7,3,4,5,5]
console.log(findMaxBid(allBids))``````

# Homework

Do: Take your first application step!
Do:  https://frontendmasters.com/courses/practical-algorithms

By Leon Noel

# #100devs - Big O (cohort 02)

Class 63 of our Free Web Dev Bootcamp for folx affected by the pandemic. Join live T/Th 6:30pm ET leonnoel.com/twitch and ask questions here: leonnoel.com/discord

• 1,213