Thursday, May 5, 2016

Software Architecture - Study



Hi,

Listing down the links which I found useful while studying software architecture. Hope this will also help you.

1. MSDN : https://msdn.microsoft.com/en-us/library/ee658098.aspx
2. Java Garbage Collection : https://www.youtube.com/watch?v=UnaNQgzw4zY
3. JVM Architecture : https://www.youtube.com/watch?v=ZBJ0u9MaKtM


1. Algorithm Analysis:

  1. Time Complexity 
    1. Theta Notation -> Lower and Upper Bound
    2. Big O Notation -> Upper Bound 
    3. Omega Notation -> Lower Bound
  2. Space Complexity
    1. Auxiliary Space -> Extra space required by the algorithm
    2. Space Complexity -> Total space -> Input + Aux 
2. Searching Algorithm
  1. Linear Search 
    1. Time Complexity -> O(n)
    2. Space Complexity -> O(n)
  2. Binary Search
    1. Time Complexity -> O(Log n)
    2. Space Complexity -> Aux Space -> O(1)
3. Sorting Algorithm
  1. Selection Sort:
    1. repeatedly finding the minimum element (considering ascending order) from unsorted part and putting it at the beginning
    2. Time Complexity -> O(n^2)
    3. Aux Space -> O(1)
    4. The good thing about selection sort is it never makes more than O(n) swaps and can be useful when memory write is a costly operation.
  2. Bubble Sort:
    1. repeatedly swapping the adjacent elements if they are in wrong order
    2. Like a bubble -> at the end of each loop-> The highest element reaches the top
    3. Time Complexity -> O(n^2)
    4. Aux Space -> O(1)
    5. Optimization possible -> If the array gets sorted in between, the algo can immediately stop.