Algorithms
UniversityGrass
这个作者很懒,什么都没留下…
展开
-
QuickSelect
QuickSelect AlgorithmTime complexity:(1) Kth largest number: https://stackoverflow.com/questions/5945193/average-runtime-of-quickselect/25796762(2) decrease by a fixed proportion by using median of mediansMedian of Median原创 2021-06-07 19:48:32 · 119 阅读 · 0 评论 -
递归和循环
递归优点:逻辑清晰,容易理解,容易写。递归缺点:函数堆栈使用多,时间空间消耗大。循环优点:时间空间消耗小。循环缺点:逻辑复杂,难以理解,难写。尾递归和单向递归都可以写成循环,尤其是尾递归,最好是写成循环,而且也很容易写成循环,甚至可以通过机械的步骤来实现,不少编译器也实现了尾递归直接优化成循环的功能。python3.6未实现尾递归优化,最大递归调用深度是3000左右。...原创 2020-11-25 03:14:50 · 262 阅读 · 0 评论 -
决策单调性
决策单调性定义与证明https://www.cnblogs.com/YSFAC/p/13363203.html详见此文。重点:考虑形如????????(????)=????????????{????????(????)+????(????,????)}的dp。(max类似)其中每一个j都称为一个决策点。定义:一个dp满足决策单调性的充要条件是:对于两个决策点????<????,若在i处y优于x,则在[????+1,????]处y都优于x。定理:若w满足四边形不等式,则dp满足决策单调性原创 2020-11-03 09:57:05 · 505 阅读 · 0 评论 -
Linear Programming
原创 2020-08-23 05:36:43 · 130 阅读 · 0 评论 -
Data Compression
Universal Data Compression:Run-length coding:3原创 2020-08-21 08:34:05 · 102 阅读 · 0 评论 -
Regular Expression
Regular Expression:NFA:原创 2020-08-20 08:32:17 · 106 阅读 · 0 评论 -
Substring Search
Knuth-Morris-Pratt substring searchBoyer Mooer3. Rabin Karp原创 2020-08-18 11:34:52 · 219 阅读 · 0 评论 -
2020-08-16
Tries:原创 2020-08-17 07:06:34 · 90 阅读 · 0 评论 -
Radix Sort
Key-indexed CountingLSD string sortMSD sort3-way sortingSuffix Sort:Longest Repeated Substring Searching:原创 2020-08-13 13:47:16 · 139 阅读 · 0 评论 -
Min-cut/Max-flow
Min-CutFord-Fulkerson AlgorithmMaxflow/ Mincut theoremRunning time analysis:Java Implementation:See the slides.原创 2020-08-10 07:43:11 · 224 阅读 · 0 评论 -
Shortest Path
API:Shortest Path Property:Dijkstra’s Algorithm:4. Acyclic edge-weighted DAGs5. Negative weights:原创 2020-08-09 08:05:38 · 118 阅读 · 0 评论 -
Minimum Spanning Tree
Definition:Assumptions:Cut Property:Greedy Algorithm:API:Kruskal’s Algorithm:Prim’s Algorithm:原创 2020-08-07 13:39:20 · 189 阅读 · 0 评论 -
Strongly-connected components
原创 2020-08-01 09:00:00 · 266 阅读 · 0 评论 -
Topological Sort
原创 2020-08-01 08:43:22 · 116 阅读 · 0 评论 -
Digraph Search
DFS:BFS:原创 2020-08-01 08:23:48 · 121 阅读 · 0 评论 -
Directed Graph
原创 2020-08-01 08:09:42 · 763 阅读 · 0 评论 -
Connectivity queries
Algorithm原创 2020-07-19 05:10:18 · 113 阅读 · 0 评论 -
Breadth-first Search
Algorithm:原创 2020-07-19 05:04:09 · 105 阅读 · 0 评论 -
Depth-first Search
Algorithm原创 2020-07-19 03:44:23 · 121 阅读 · 0 评论 -
Graph
ClientAdjacent list:原创 2020-07-19 03:37:12 · 89 阅读 · 0 评论 -
Hash table
Hash tableSeparate ChainingLinear ProbingComparison原创 2020-07-04 16:09:59 · 147 阅读 · 0 评论 -
Geometric application of BSTs
Two types: simple binary search tree, and interval search tree.原创 2020-07-04 09:18:07 · 115 阅读 · 0 评论 -
Red Black Tree
Red Black Treeothers can be found on slides原创 2020-07-04 01:55:19 · 109 阅读 · 0 评论 -
2-3 tree
2-3 trees原创 2020-07-04 01:44:11 · 161 阅读 · 0 评论 -
Binary Search Tree
Algorithm:Search. If less, go left; if greater, go right; if equal, search hit.Insert. If less, go left; if greater, go right; if null, insert.Get. Return value corresponding to given key, or null if no such key.Put. Associate value with key.Co..原创 2020-07-02 08:11:27 · 135 阅读 · 0 评论 -
Elementary Symbol Tables
Sequential search in a linked listBinary search in an ordered array:Complexity:原创 2020-07-02 07:59:15 · 146 阅读 · 0 评论 -
Priority Queues and Heap Sort
You can use binary heap to implement priority queue by an array.Algorithm for Heapsort:Heap construction. Build max heap using bottom-up method.Sortdown. Repeatedly delete the largest remaining item.public class Heap{ public static void sort(Compa.原创 2020-07-02 04:01:31 · 156 阅读 · 0 评论 -
Sorting summary
原创 2020-07-01 12:08:27 · 97 阅读 · 0 评论 -
Quicksort
Algorithm:private static int partition(Comparable[] a, int lo, int hi){ int i = lo, j = hi+1; while (true) { while (less(a[++i], a[lo])) if (i == hi) break; while (less(a[lo], a[--j])) if (j == lo) break; if (i >= j) break; exch(a, i, j);.原创 2020-07-01 12:06:13 · 99 阅读 · 0 评论 -
Duplicate keys sort
Algorithm:1)Mergesort2)Quicksort・Let v be partitioning item a[lo].・Scan i from left to right.– (a[i] < v): exchange a[lt] with a[i]; increment both lt and i– (a[i] > v): exchange a[gt] with a[i]; decrement gt– (a[i] == v): increment iprivat.原创 2020-07-01 11:56:38 · 2767 阅读 · 0 评论 -
Quick select
Algorithm:Complexity:Proposition. Quick-select takes linear time on average.原创 2020-07-01 11:48:59 · 195 阅读 · 0 评论 -
Mergesort
Algorithm:Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi],replace with sorted subarray a[lo] to a[hi].public class Merge{ private static void merge(...) { /* as before */ } private static void sort(Comparable[] a, Comparabl.原创 2020-07-01 08:46:44 · 162 阅读 · 0 评论 -
Convex Hull
Algorithm:原创 2020-07-01 08:10:26 · 115 阅读 · 0 评论 -
Shuffle
Algorithm:Knuth Shuffle:・In iteration i, pick integer r between 0 and i uniformly at random.・Swap a[i] and a[r].Complexity:Knuth shuffling algorithm produces a uniformly random permutation of the input array in linear time.原创 2020-07-01 07:50:11 · 116 阅读 · 0 评论 -
Shellsort
Algorithm:Move entries more than one position at a time by h-sorting the array.How to h-sort an array? Insertion sort, with stride length h.Proposition. A g-sorted array remains g-sorted after h-sorting it.Complexity:Proposition. The worst-case nu.原创 2020-07-01 07:46:35 · 264 阅读 · 0 评论 -
Insertion Sort
Algorithm:In iteration i, swap a[i] with each larger entry to its left.Complexity:Best case: If the array is in ascending order, insertion sort makesN- 1 compares and 0 exchanges.Worst case: If the array is in descending order (and no duplicates),i.原创 2020-07-01 07:30:19 · 127 阅读 · 0 评论 -
Selection Sort
Algorithm・In iteration i, find index min of smallest remaining entry.・Swap a[i] and a[min].Complexity:Running time insensitive to input: Quadratic time, even if input is sorted.Data movement is minimal: Linear number of exchanges.原创 2020-07-01 07:22:30 · 93 阅读 · 0 评论 -
Generic
public class FixedCapacityStack<Item>{ private Item[] s; private int N = 0; public FixedCapacityStack(int capacity) { s = (Item[]) new Object[capacity]; } //Java does not allow s = new Item[capacity]; public boolean isEmpty() { return N ==原创 2020-06-30 14:57:30 · 103 阅读 · 0 评论 -
Queue
linked list implementationFIFOpublic class LinkedQueueOfStrings{ private Node first, last; private class Node { /* same as in StackOfStrings */ } public boolean isEmpty() { return first == null; } public void enqueue(String item) { Node old.原创 2020-06-30 14:53:04 · 86 阅读 · 0 评论 -
Stack
LIFOlinked list implementationpublic class LinkedStackOfStrings{ private Node first = null; private class Node { String item; Node next; } public boolean isEmpty() { return first == null; } public void push(String item) { Node oldfirst = f原创 2020-06-30 14:47:08 · 91 阅读 · 0 评论