SuperAPI AI Directory

computer-science-algorithms

Coding & development

View repository

Updated 10-16 03:46

About this skill

Community Classical Computer Science Algorithms Best Practices

A practitioner-oriented reference for choosing and implementing classical algorithms and data structures correctly. Organized by execution-lifecycle impact: the earliest decisions (asymptotic class, data-structure choice) cascade through everything else, so the rules near the top of the table matter most.

Scope: the patterns that show up in everyday production code review, reasonable interview / contest problems, and the at-scale toolbox (sketches, streaming, distributed primitives) — not an exhaustive cover of CLRS. Topics intentionally outside the current version: network flow, modular arithmetic, Bellman-Ford and Floyd-Warshall as standalone rules, SCC (Tarjan/Kosaraju), computational geometry, FFT, Manacher / Z-function as standalone rules. They're flagged inline in the relevant rules.

Distilled from CLRS (Introduction to Algorithms, 4th ed.), Sedgewick & Wayne (Algorithms, 4th ed., Princeton), Skiena's Algorithm Design Manual, Laaksonen's Competitive Programmer's Handbook, cp-algorithms.com, and the USACO Guide.

When to Apply

Use these rules when:

  • Choosing an algorithm or data structure for a new problem ("what's the right way to do X?")
  • Reviewing code for hidden O(n²) blowup — repeated in-checks on lists, pop(0) on lists, string concatenation in loops, naive substring search
  • Picking a DP state or recurrence, before writing the memoization
  • Modeling a problem as a graph (BFS vs Dijkstra vs topological sort)
  • Refactoring brute force / naive solutions that work on toy inputs but time out at scale
  • Deciding whether greedy applies, or whether DP / branch-and-bound is required

Rule Categories By Priority

# Category Prefix Impact Why it cascades
1 Asymptotic Complexity & Algorithm Selection comp- CRITICAL Wrong O() class makes every other optimization irrelevant
2 Data Structure Selection ds- CRITICAL The container determines which operations are cheap
3 Sorting & Searching srch- HIGH Foundation for greedy, two-pointer, sweep-line, binary-search-on-the-answer
4 Dynamic Programming dp- HIGH Exponential → polynomial transformations
5 Graph Algorithms graph- HIGH Networks, dependencies, routing, scheduling all reduce to graphs
6 Divide & Conquer / Recursion divide- MEDIUM-HIGH Logarithmic-factor speedups; stack-depth and recurrence traps
7 Greedy Algorithms greedy- MEDIUM Fast when correct, silently wrong when not
8 String & Sequence Algorithms str- MEDIUM Pattern matching, parsing, substring queries
9 Scale & Probabilistic Algorithms scale- MEDIUM Sketches, streaming, distributed primitives — situational, decisive when they apply

Quick Reference

1. Asymptotic Complexity & Algorithm Selection (CRITICAL)

2. Data Structure Selection (CRITICAL)

3. Sorting & Searching (HIGH)

4. Dynamic Programming (HIGH)

5. Graph Algorithms (HIGH)

6. Divide & Conquer / Recursion (MEDIUM-HIGH)

7. Greedy Algorithms (MEDIUM)

8. String & Sequence Algorithms (MEDIUM)

9. Scale & Probabilistic Algorithms (MEDIUM)

The "unusual but valuable at scale" toolbox — sketches that trade tiny accuracy loss for orders-of-magnitude memory wins, streaming primitives for inputs that don't fit in RAM, and distributed structures that survive sharding changes.

How to Use

Start with the category that matches the question:

  • "What's the right algorithm for n = 10⁶?" → comp- (input-bound)
  • "I'm looking things up in a list inside a loop" → ds-hash-map-for-keyed-lookup or comp-watch-for-quadratic-blowup-from-membership-in-list
  • "My recursion is slow" → dp-memoize-overlapping-subproblems and comp-derive-recurrences-via-master-theorem
  • "Shortest path / connectivity / ordering tasks" → graph-
  • "Choose items to maximize value" → start with greedy-prove-exchange-argument-before-using; fall back to dp-knapsack-pattern
  • "Find / match strings" → str-
  • "Memory is the constraint, not time" / "Sample / count / deduplicate at scale" / "Sharding" → scale-

Code examples are in Python (most readable across audiences). The reasoning generalizes to any language — equivalent stdlib primitives are listed where they differ.

Reference Files

File Description
references/_sections.md Category definitions and ordering
assets/templates/_template.md Template for new rules
metadata.json Version and reference information
AGENTS.md Auto-built TOC navigation

Related Skills

  • complexity-optimizer — Static analysis that finds the patterns these rules diagnose