List of where various algorithms/structures pop up in web development [closed]
Could someone please list where some of the following algorithms/structures pop up in web development (I'm an aspiring web developer and I'm curious to know when these various topics pop up):
- Bubble sort
- Insertion sort
- Selection sort
- Mergesort
- Quicksort
- Stack
- Queue
- Linked List
- Binary Trees
- Binary Search Trees
- Balanced Binary Tree
- AVL Trees
- Splay Trees
- Red-Black trees
- Priority Queues
- Hashing
- Adjacency Linked Lists
- Adjacency matrices
- Graph Traversals (Depth First Search, Breadth First Search)
- Minimum Spanning Trees (Kruskal's algorithm, Prim's algorithm)
- Directed Graph (Digraph)
- Topological sort
The list is some topics that were covered in my Data Structures and Algorithms class. There might be some other important ones that I forgot to list as well.
Most of these are important for teaching concepts, and while some of them are commonly used in most applications (Stacks & Queues, e.g.), they don't really "pop up" the way you're describing.
It is important to understand the principles that these structures illustrate, and to know when to use a LinkedList vs an ArrayList. But as far as "when will I ever use this," it's awfully hard to point to a specific part of a website and say, "see, they used a binary search tree here."
For most web development, these can be grouped together.
- Quite a bit of web development is going to use a SQL back-end. In a
select
statement, you can have anorder by
clause what will undoubtedly be implemented by one of the sorts you've named (or something similar such as intro-sort, which is mostly a fairly minor variation on Quicksort). - Likewise, you'll deal with associative arrays, which are typically implemented as either some sort of hash table or some sort of balanced tree -- but could also use a splay tree.
- graphs and graph traversal don't figure heavily in your typical (e.g., e-commerce) web development. For some types of network management, however, it's typical to put such things as servers into nodes of a graph, with arcs to signify the network connections.
- Most languages you use will use stacks implicitly, but it'll be fairly unusual to use them explicitly in typical web development.
- Queues will depend. You're not likely to implement a queue, but if (for example) you deal with a distributed database, you'll probably end up using some sort of queue that it provides.
精彩评论