* week-1 : searching algorithms
1. linear search - O(n)
2. iterative binary search - O(log n)
3. iterative binary search - O(log n)
4. jump search - O(sqrt(n))
5. exponential search - O(log n)
* week-2 :
1. duplicates - to find no. of occurences of a given element in array - O(log n)
2. indices_sum - to find three indices i, j, k such that arr[i] + arr[j] = arr[k] - O(n^3)
3. difference - to count the number of pairs of integers such that their difference is equal to a given key - O(n^2)
* week-3 : sorting algorithms
- insertion sort - O(n^2)
- selection sort - O(n^2)
- merge sort - O(n*log n)
* week-4 : sorting algorithms
- merge sort - O(n*log n)
- randomised quick sort - O(n*log n)
- partial quick sort - O(n)
* week-5 :
- count character with max. occurence in an array - O(n)
- pair_sum - to find whether two elements exist such that their sum is equal to the given key element- O(n*log n)
- common_element - to find list of elements which are common to two sorted integer arrays of size m and n - O(m+n)
* week-6 : bfs / dfs
- dfs - to find if there is a path between 2 nodes
- bipartite - to check if the graph is bipartite or not
* week-7 : shortest path problems in graph
- dijkstra - to find shortest paths of all nodes from a source node
- bellman ford - to find shortest paths of all nodes from a source node
* week-8 : minimum spanning trees
- prim's - to find minimum spanning weight
- kruskal's - to find minimum spanning weight
- maxWeight - to find maximum spanning weight (using kruskal's)
* week-9 :
- floyd_warshall - to find all pair shortest path
- fractional_knapsack - to find list of selected items with given weight and maximum value
- merge_files - to merge all files into single file with minimum computation
* week-10 :
- max_activities - to find max no. of non-conflicting activities , given starting and finishing time
- max_tasks - to find max no. of tasks that can be performed , given time and deadlines
- majority_element - to find whether majority element exists or not . Also find median .
* week-11 :
- multiply_matrices - to find min no. of operations to multiply list of matrices
- coin - to find no. of ways to add coins to make a sum (unbounded knapsack) .
- equal_sum_subset - to partition a set of elements into 2 subsets of equal sum .