Week 5 (2/4-2/10)
I made a little summary based on what I learned this week's content. I am hoping that this summary helps me to study for the final.
QuickSort:
QuickSort is a divide-and-conquer sort. It picks a pivot, then partitions the list so numbers smaller than the pivot go left and numbers bigger go right. After the first partition, QuickSort recursively sorts the left and right parts.
Partitioning (i and j pointers):
You keep moving i from the left (looking for a number too big) and j from the right (looking for a number too small), in other words, i moves from the left until it finds a value > pivot (too big, belongs on the right). j moves from the right until it finds a value < pivot (too small, belongs on the left). Then you swap those two.
When i and j cross, you swap the pivot into its final spot.
Median-of-Three Partitioning:
This improves QuickSort when the data is already sorted or reverse-sorted (which can make QuickSort slow). It chooses the pivot as the median of (first, middle, last), then does partitioning using that pivot idea. Also, we can’t use median-of-three when a subarray is size 3 or less.
Binary Tree Traversals:
Traversal is just “the order you visit nodes”:
Preorder: root, left, right
In order: left, root, right
Postorder: left, right, root
Binary Search:
Binary search works on a sorted list. You check the middle value, then go left half or right half depending on whether the target is smaller or bigger. Each step cuts the search space in half, so it’s fast (log time).
DAG and Topological Sorting:
A DAG is a directed graph with no directed cycles.
A topological order is a list of nodes where every arrow goes from earlier to later. If there’s a cycle, you cannot do a topological sort.
Kahn’s Algorithm:
finds nodes with in-degree 0 (no incoming arrows), removes one (using alphabetical order when there are ties), updates in-degrees (depending on incoming arrows), and repeats.
No comments:
Post a Comment