Complexity Cheat Sheet



Heroic Boss Guides: TL;DR

Welcome to our TL;DR Cheat Sheet! This is meant to give you basic information on the key aspects of each fight, and is over-simplified. We strongly recommend that after you finish reading this, you visit the page for each boss to get more in-depth information on how the abilities work and a detailed strategy.

Wrathion

Back and forth between P1 and P2 till he dies

Phase 1

  • Nobody stand in front of, or behind, the boss (except for active tank)
    • Tanks swap at 1-2 stacks
  • Red circle under you, get out
  • Boss does the giant red swirlie, get 35 yards away
    • Immediately after, run to the furthest edge of the room and wait for explosions to end

Phase 2

  • 3 people need to soak the red soak circles, run over pillars
  • Everyone else finds and kills stealthed mobs
  • Kill any pillars your 3 person team couldn’t
  • 1/22/14 Big-O Algorithm Complexity Cheat Sheet bigocheatsheet.com 1/17 I receive $12.19 / wk on Gittip. Big-O Cheat Sheet Searching Sorting Data Structures Heaps Graphs Chart Comments Tweet 2,710 1.7k Know Thy Complexities! This webpage covers the space and time Big-O complexities of common algorithms used in Computer Science.
  • Big-O Algorithm Complexity Cheat Sheet Created Date: 8/24/2016 10:43:56 AM.

He has also made a cheat sheet useful for talking to colleagues or friends about the technique: Click image for PDF version As this technique is quite popular with software developers there is a lot of software implementations to assist you in using this technique: several iPhone apps and versions of the timer used to measure the 25 minutes.

Maut

Back and forth between P1 and P2 till he dies

Phase 1

  • Melee stand to the boss’s side, ranged and heals behind him
  • Don’t get hit by Black Wings
  • If you get the purple targeting circle, move towards the edge of the room to drop puddle
  • Don’t stand in giant purple swirlie. After it explodes, add spawns from the middle
  • Tank 1 gets boss, tank 2 gets add 1 when it spawns
    • When add 2 spawns, tank 2 taunts boss. Boss will eat add 1 when it gets close
    • Repeat this when add 3 spawns
  • Stand in the purple puddle during Stygian Annihilation

Phase 2

  • Everyone stack in melee
  • Tanks run around and soak blue orbs coming from the side
    • Drop your debuff on the raid group
  • If you get small purple swirlie, move 8 yards out till it goes away

Skitra

Back and forth between normal and intermission phase. Intermission every 20% HP

Normal Phase

  • Everyone stacks in melee behind the boss except the tank
    • Tanks swap at 7-8 stacks
  • If you get Shred Psyche, move 8 yards away until it falls off
    • Wait 5s after add spawns, then nuke it
  • CC one of the Images to give yourself a safe spot
  • Lust on pull

Intermission

  • Boss splits raid in half with debuffs
  • Each half sees 4 Images of the boss
    • Most are fake
    • Find real one, kill real one

Xanesh

Soccer boss!

Normal abilities

  • Tanks swap at 1-2 stacks
  • Move away from red targeting circle if you see one
  • Don’t stand in the Obelisks
  • Stay out of the goop during Torment
    • Raid use movement CD here like Stampeding Roar

Soccer!

  • 3 players soak the orange soak circles
  • Find the glowing portal, ball spawns here
  • “Kick” ball to the other portal on opposite side of the room
  • Ball can NOT touch wall, Obelisks, or Azshara
  • After scoring goal, you can’t play soccer for 3 mins. New team next time.

Keep doing these till she dies

Hivemind

1 phase fight against 2 bosses. They don’t share health pool. Summon adds all fight

  • Tek’ris in control = stack bosses
  • Ka’zir in control = spread bosses 20 yards
  • No tank swaps
  • Don’t stand in Tek’ris’s purple frontal
  • Spread out when purple circles go on everyone
  • When Tek’ris makes a Ravager add, everyone hard swap
  • When Ka’zir makes an add do Volatile Corruption, hard swap
  • Dodge bowling ball adds
  • Interrupt Ka’zir’s cast
  • Keep adds slowed, AoE fest. Kill them as they keep coming
  • Lust on pull

Shad’har

3 phase fight against a 2 headed doggo

All Phases

  • Boss does a frontal cone breath ability at a random player
    • Does damage + a debuff. Debuff changes based on phase
    • Can always be dodged
  • Does a 1-2 combo on tanks Crush and Dissolve. Always taunt swap as soon as Crush deals damage
  • If you get the 4 stack application of Debilitating Spit, use a cooldown
  • If you get fixated by a Living Miasma, move away from people

Phase 1 – 100%-66%

  • Dodge purple swirlies, they come out more frequently the longer you’re in p1

Phase 2 – 66%-33%

  • Soak void orbs when they spawn

Phase 3 – 33%-0%

  • Burn phase, lust at 30%
  • Green goop puddle starts in the middle of the room, grows over time
    • Racing to kill the boss before goop takes over the entire space
  • Boss does heavy AoE to the raid the rest of the fight
  • Enrages at 30%, increasing damage done 25%

Drest’agath

One phase encounter against a giant tentacle and her smaller tentacle adds

Drest’agath Abilities

  • Heals 11 mil every 5s
  • Puts big purple circle on the tank. Taunt swap when this happens
    • Tank with the circle needs to run to an add and explode on the add
  • Move away from boss when she does Entropic Crash
  • If you get purple swirlie, move away from people
  • Dodge Void Glare lazer beam
  • At 100 energy, does a large AoE on the raid

Adds

Pdf cracking complexity cheat sheet
  • 3 types, Tentacles, Eyes, Maws
    • Eyes do mind flay, interrupt it. Kill these last.
    • Tentacles drop Smoke Bomb. Melee get inside smoke & kill it
      • 1-2 healers need to go in smoke to heal
    • Maw does a heal absorb to anyone near. Ranged nuke this
  • When adds die, they drop purple goop. Run over goop to get Void Infused Ichor
    • When you have Ichor, any damage you deal to the boss can NOT be regenerated by her passive healing. Raid should all grab ichor at same time and use CDs

Rotate through killing adds & boss 3-4 times and kill her

Il’gynoth

2 phase encounter. P1 you fight Il’gynoth, P2 you kill organs. Killing 1 organ moves you back to P1. Need to kill all 3 organs to win

Il’gynoth abilities

  • Beam nukes the tank. Swap after taking 2 of these
  • Also does standard Eye Beam lasers at a few people. Run away from this. Leaves goop on ground, try to keep goop in a small circle
  • MC’s random players. Everyone swap and kill MC’d people
  • In your 2nd and 3rd P1, you’ll have blood goop adds. Slow & kill them
  • Lust during 3rd Phase 1

P2 abilities

  • If you get red circle on you, spread out from people
  • Pick 1 organ to kill each P2, all DPS focus it
  • Interrupt organs when they cast. If you miss, you’ll get a blood goop add
    • Blood goop adds need to be slowed and killed

Vexiona

3 phase fight. Alternates between P1 and P2 until boss reaches 40%, then goes into P3.

Phase 1

  • Start fight off against boss + one big Ascendant add
    • Nuke Ascendant add asap
    • Ascendant does a massive lazer beam at it’s tank
    • Leaves an orb where it dies, this comes into play later
  • If you get the purple circle under you, move to the edges of the room
    • Drops a puddle. Try to drop new puddles on or near old ones
  • Boss does a frontal breath on the tank, gives tank stacks of a DoT
    • After 3rd breath, tank should get the orb the Ascendant dropped. Resets your stacks
  • When tank gets Despair, healers need to bomb heal them
  • Boss also periodically puts down a gateway and small adds come out. Casters, rogues, weak warriors. Just kill these

Phase 2

  • Boss flies into air, summons new adds, make 1 add turn into Ascendant
    • Everyone nuke Ascendant ASAP, then Vexiona tank pick up new orb to reset stacks
  • Dodge the flyover flame breath from Vexiona
  • Handle the purple circles like in P1, drop puddles near edges
  • After 3 flyovers, back to P1

Big O Complexity Cheat Sheet

Repeat P1 and P2 until boss hits 40%

Phase 3

  • Burn phase. Lust here
  • Everyone gets DoT stacks now whenever you take damage
    • Healers save raid CDs for late in fight, boss sub 20% hp
  • Move away from boss when she does Heart of Darkness, get out of glowing orange circle
  • Stand next to a friend all phase
  • Have 5+ people stack on tank when Desolation goes out

Ra-den

2 phase fight. P2 starts at 40% hp

Phase 1

  • Everyone but tanks should stack in melee range
    • Put 2 markers behind the raid, one left one right
  • Orbs spawn, one void one lightning. Kill one, let other hit boss
    • Alternate which type of orb you kill
  • Boss explodes for AoE damage when orb hits him
  • An add spawns based on which orb
    • Lightning orb makes a lightning add casting Chain Lightning
    • Void orb makes Void add casting a big soak circle. Targeted player make sure you’re with the group to split damage with everyone
  • Also does an Unstable ability based on which orb hit
    • Lightning orb makes a jumping lightning bolt. Affected player runs to one of the markers behind raid. Someone else runs to other marker for bolt to jump to. Keep repeating until bolt stops jumping
    • Void orb makes small soak circles. Soak these
    • Different people need to soak or be hit by bolt every time
  • Tanks swap at 2 stacks of the debuff he does

Phase 2

  • Burn phase, lust here
  • Heavy AoE to everyone for rest of fight
  • Dodge purple swirlies
  • If you get Chained, run away from people you’re connected with
  • Healers should rotate raid CDs after lust ends
  • Keep tanks around half health this phase, so the DoT from Decaying Strike doesn’t wreck them

Carapace

Coming Soon. See full guide for now.

N’zoth

Coming soon. See full guide for now.


We summarize the performance characteristics of classic algorithms anddata structures for sorting, priority queues, symbol tables, and graph processing.

We also summarize some of the mathematics useful in the analysis of algorithms, including commonly encountered functions;useful formulas and appoximations; properties of logarithms;asymptotic notations; and solutions to divide-and-conquer recurrences.


Sorting.

The table below summarizes the number of compares for a variety of sortingalgorithms, as implemented in this textbook.It includes leading constants but ignores lower-order terms.
ALGORITHMCODEIN PLACESTABLEBESTAVERAGEWORSTREMARKS
selection sortSelection.java½ n 2½ n 2½ n 2n exchanges;
quadratic in best case
insertion sortInsertion.javan¼ n 2½ n 2use for small or
partially-sorted arrays
bubble sortBubble.javan½ n 2½ n 2rarely useful;
use insertion sort instead
shellsortShell.javan log3nunknownc n 3/2tight code;
subquadratic
mergesortMerge.java½ n lg nn lg nn lg nn log n guarantee;
stable
quicksortQuick.javan lg n2 n ln n½ n 2n log n probabilistic guarantee;
fastest in practice
heapsortHeap.javan2 n lg n2 n lg nn log n guarantee;
in place
n lg n if all keys are distinct


Priority queues.

The table below summarizes the order of growth of the running time ofoperations for a variety of priority queues, as implemented in this textbook.It ignores leading constants and lower-order terms.Except as noted, all running times are worst-case running times.
DATA STRUCTURECODEINSERTDEL-MINMINDEC-KEYDELETEMERGE
arrayBruteIndexMinPQ.java1nn11n
binary heapIndexMinPQ.javalog nlog n1log nlog nn
d-way heapIndexMultiwayMinPQ.javalogdnd logdn1logdnd logdnn
binomial heapIndexBinomialMinPQ.java1log n1log nlog nlog n
Fibonacci heapIndexFibonacciMinPQ.java1log n11 log n1
amortized guarantee


Symbol tables.

The table below summarizes the order of growth of the running time ofoperations for a variety of symbol tables, as implemented in this textbook.It ignores leading constants and lower-order terms.Analysis
worst caseaverage case
DATA STRUCTURECODESEARCHINSERTDELETESEARCHINSERTDELETE
sequential search
(in an unordered list)
SequentialSearchST.javannnnnn
binary search
(in a sorted array)
BinarySearchST.javalog nnnlog nnn
binary search tree
(unbalanced)
BST.javannnlog nlog nsqrt(n)
red-black BST
(left-leaning)
RedBlackBST.javalog nlog nlog nlog nlog nlog n
AVL
AVLTreeST.javalog nlog nlog nlog nlog nlog n
hash table
(separate-chaining)
SeparateChainingHashST.javannn1 1 1
hash table
(linear-probing)
LinearProbingHashST.javannn1 1 1
uniform hashing assumption


Graph processing.

The table below summarizes the order of growth of the worst-case running time and memory usage (beyond the memory for the graph itself)for a variety of graph-processing problems, as implemented in this textbook.It ignores leading constants and lower-order terms.All running times are worst-case running times.


PROBLEMALGORITHMCODETIMESPACE
pathDFSDepthFirstPaths.javaE + VV
shortest path (fewest edges)BFSBreadthFirstPaths.javaE + VV
cycleDFSCycle.javaE + VV
directed pathDFSDepthFirstDirectedPaths.javaE + VV
shortest directed path (fewest edges)BFSBreadthFirstDirectedPaths.javaE + VV
directed cycleDFSDirectedCycle.javaE + VV
topological sortDFSTopological.javaE + VV
bipartiteness / odd cycleDFSBipartite.javaE + VV
connected componentsDFSCC.javaE + VV
strong componentsKosaraju–SharirKosarajuSharirSCC.javaE + VV
strong componentsTarjanTarjanSCC.javaE + VV
strong componentsGabowGabowSCC.javaE + VV
Eulerian cycleDFSEulerianCycle.javaE + VE + V
directed Eulerian cycleDFSDirectedEulerianCycle.javaE + VV
transitive closureDFSTransitiveClosure.javaV (E + V)V 2
minimum spanning treeKruskalKruskalMST.javaE log EE + V
minimum spanning treePrimPrimMST.javaE log VV
minimum spanning treeBoruvkaBoruvkaMST.javaE log VV
shortest paths (nonnegative weights)DijkstraDijkstraSP.javaE log VV
shortest paths (no negative cycles)Bellman–FordBellmanFordSP.javaV (V + E)V
shortest paths (no cycles)topological sortAcyclicSP.javaV + EV
all-pairs shortest pathsFloyd–WarshallFloydWarshall.javaV 3V 2
maxflow–mincutFord–FulkersonFordFulkerson.javaEV (E + V)V
bipartite matchingHopcroft–KarpHopcroftKarp.javaV ½ (E + V)V
assignment problemsuccessive shortest pathsAssignmentProblem.javan 3 log nn 2


Commonly encountered functions.

Runtime complexity cheat sheetHere are some functions that are commonly encounteredwhen analyzing algorithms.
FUNCTIONNOTATIONDEFINITION
floor( lfloor x rfloor )greatest integer (; le ; x)
ceiling( lceil x rceil )smallest integer (; ge ; x)
binary logarithm( lg x) or (log_2 x)(y) such that (2^{,y} = x)
natural logarithm( ln x) or (log_e x )(y) such that (e^{,y} = x)
common logarithm( log_{10} x )(y) such that (10^{,y} = x)
iterated binary logarithm( lg^* x )(0) if (x le 1;; 1 + lg^*(lg x)) otherwise
harmonic number( H_n )(1 + 1/2 + 1/3 + ldots + 1/n)
factorial( n! )(1 times 2 times 3 times ldots times n)
binomial coefficient( n choose k )( frac{n!}{k! ; (n-k)!})


Useful formulas and approximations.

Here are some useful formulas for approximations that are widely used in the analysis of algorithms.
  • Harmonic sum: (1 + 1/2 + 1/3 + ldots + 1/n sim ln n)
  • Triangular sum: (1 + 2 + 3 + ldots + n = n , (n+1) , / , 2 sim n^2 ,/, 2)
  • Sum of squares: (1^2 + 2^2 + 3^2 + ldots + n^2 sim n^3 , / , 3)
  • Geometric sum: If (r neq 1), then(1 + r + r^2 + r^3 + ldots + r^n = (r^{n+1} - 1) ; /; (r - 1))
    • (r = 1/2): (1 + 1/2 + 1/4 + 1/8 + ldots + 1/2^n sim 2)
    • (r = 2): (1 + 2 + 4 + 8 + ldots + n/2 + n = 2n - 1 sim 2n), when (n) is a power of 2
  • Stirling's approximation: (lg (n!) = lg 1 + lg 2 + lg 3 + ldots + lg n sim n lg n)
  • Exponential: ((1 + 1/n)^n sim e; ;;(1 - 1/n)^n sim 1 / e)
  • Binomial coefficients: ({n choose k} sim n^k , / , k!) when (k) is a small constant
  • Approximate sum by integral: If (f(x)) is a monotonically increasing function, then( displaystyle int_0^n f(x) ; dx ; le ; sum_{i=1}^n ; f(i) ; le ; int_1^{n+1} f(x) ; dx)


Properties of logarithms.

  • Definition: (log_b a = c) means (b^c = a).We refer to (b) as the base of the logarithm.
  • Special cases: (log_b b = 1,; log_b 1 = 0 )
  • Inverse of exponential: (b^{log_b x} = x)
  • Product: (log_b (x times y) = log_b x + log_b y )
  • Division: (log_b (x div y) = log_b x - log_b y )
  • Finite product: (log_b ( x_1 times x_2 times ldots times x_n) ; = ; log_b x_1 + log_b x_2 + ldots + log_b x_n)
  • Changing bases: (log_b x = log_c x ; / ; log_c b )
  • Rearranging exponents: (x^{log_b y} = y^{log_b x})
  • Exponentiation: (log_b (x^y) = y log_b x )


Sheet

Aymptotic notations: definitions.

NAMENOTATIONDESCRIPTIONDEFINITION
Tilde(f(n) sim g(n); )(f(n)) is equal to (g(n)) asymptotically
(including constant factors)
( ; displaystyle lim_{n to infty} frac{f(n)}{g(n)} = 1)
Big Oh(f(n)) is (O(g(n)))(f(n)) is bounded above by (g(n)) asymptotically
(ignoring constant factors)
there exist constants (c > 0) and (n_0 ge 0) such that (0 le f(n) le c cdot g(n)) forall (n ge n_0)
Big Omega(f(n)) is (Omega(g(n)))(f(n)) is bounded below by (g(n)) asymptotically
(ignoring constant factors)
( g(n) ) is (O(f(n)))
Big Theta(f(n)) is (Theta(g(n)))(f(n)) is bounded above and below by (g(n)) asymptotically
(ignoring constant factors)
( f(n) ) is both (O(g(n))) and (Omega(g(n)))
Little oh(f(n)) is (o(g(n)))(f(n)) is dominated by (g(n)) asymptotically
(ignoring constant factors)
( ; displaystyle lim_{n to infty} frac{f(n)}{g(n)} = 0)
Little omega(f(n)) is (omega(g(n)))(f(n)) dominates (g(n)) asymptotically
(ignoring constant factors)
( g(n) ) is (o(f(n)))


Common orders of growth.

NAMENOTATIONEXAMPLECODE FRAGMENT
Constant(O(1))array access
arithmetic operation
function call
Logarithmic(O(log n))binary search in a sorted array
insert in a binary heap
search in a red–black tree
Linear(O(n))sequential search
grade-school addition
BFPRT median finding
Linearithmic(O(n log n))mergesort
heapsort
fast Fourier transform
Quadratic(O(n^2))enumerate all pairs
insertion sort
grade-school multiplication
Cubic(O(n^3))enumerate all triples
Floyd–Warshall
grade-school matrix multiplication
Polynomial(O(n^c))ellipsoid algorithm for LP
AKS primality algorithm
Edmond's matching algorithm
Exponential(2^{O(n^c)})enumerating all subsets
enumerating all permutations
backtracing search


Asymptotic notations: properties.

  • Reflexivity: (f(n)) is (O(f(n))).
  • Constants: If (f(n)) is (O(g(n))) and ( c > 0 ),then (c cdot f(n)) is (O(g(n)))).
  • Products: If (f_1(n)) is (O(g_1(n))) and ( f_2(n) ) is (O(g_2(n)))),then (f_1(n) cdot f_2(n)) is (O(g_1(n) cdot g_2(n)))).
  • Sums: If (f_1(n)) is (O(g_1(n))) and ( f_2(n) ) is (O(g_2(n)))),then (f_1(n) + f_2(n)) is (O(max { g_1(n) , g_2(n) })).
  • Transitivity: If (f(n)) is (O(g(n))) and ( g(n) ) is (O(h(n))),then ( f(n) ) is (O(h(n))).
  • Polynomials: Let (f(n) = a_0 + a_1 n + ldots + a_d n^d) with(a_d > 0). Then, ( f(n) ) is (Theta(n^d)).
  • Logarithms and polynomials: ( log_b n ) is (O(n^d)) for every ( b > 0) and every ( d > 0 ).
  • Exponentials and polynomials: ( n^d ) is (O(r^n)) for every ( r > 0) and every ( d > 0 ).
  • Factorials: ( n! ) is ( 2^{Theta(n log n)} ).
  • Limits: If ( ; displaystyle lim_{n to infty} frac{f(n)}{g(n)} = c)for some constant ( 0 < c < infty), then(f(n)) is (Theta(g(n))).
  • Limits: If ( ; displaystyle lim_{n to infty} frac{f(n)}{g(n)} = 0),then (f(n)) is (O(g(n))) but not (Theta(g(n))).
  • Limits: If ( ; displaystyle lim_{n to infty} frac{f(n)}{g(n)} = infty),then (f(n)) is (Omega(g(n))) but not (O(g(n))).


Here are some examples.

FUNCTION(o(n^2))(O(n^2))(Theta(n^2))(Omega(n^2))(omega(n^2))(sim 2 n^2)(sim 4 n^2)
(log_2 n)
(10n + 45)
(2n^2 + 45n + 12)
(4n^2 - 2 sqrt{n})
(3n^3)
(2^n)


Divide-and-conquer recurrences.

For each of the following recurrences we assume (T(1) = 0)and that (n,/,2) means either (lfloor n,/,2 rfloor) or(lceil n,/,2 rceil).
RECURRENCE(T(n))EXAMPLE
(T(n) = T(n,/,2) + 1)(sim lg n)binary search
(T(n) = 2 T(n,/,2) + n)(sim n lg n)mergesort
(T(n) = T(n-1) + n)(sim frac{1}{2} n^2)insertion sort
(T(n) = 2 T(n,/,2) + 1)(sim n)tree traversal
(T(n) = 2 T(n-1) + 1)(sim 2^n)towers of Hanoi
(T(n) = 3 T(n,/,2) + Theta(n))(Theta(n^{log_2 3}) = Theta(n^{1.58...}))Karatsuba multiplication
(T(n) = 7 T(n,/,2) + Theta(n^2))(Theta(n^{log_2 7}) = Theta(n^{2.81...}))Strassen multiplication
(T(n) = 2 T(n,/,2) + Theta(n log n))(Theta(n log^2 n))closest pair


Master theorem.

Let (a ge 1), (b ge 2), and (c > 0) and suppose that(T(n)) is a function on the non-negative integers that satisfiesthe divide-and-conquer recurrence$$T(n) = a ; T(n,/,b) + Theta(n^c)$$with (T(0) = 0) and (T(1) = Theta(1)), where (n,/,b) meanseither (lfloor n,/,b rfloor) or either (lceil n,/,b rceil).

Complexity Cheat Sheet

  • If (c < log_b a), then (T(n) = Theta(n^{log_{,b} a}))
  • If (c = log_b a), then (T(n) = Theta(n^c log n))
  • If (c > log_b a), then (T(n) = Theta(n^c))
Remark: there are many different versions of the master theorem. The Akra–Bazzi theoremis among the most powerful.

Last modified on September 12, 2020.
Copyright © 2000–2019Robert SedgewickandKevin Wayne.All rights reserved.