From 855c10a724b480b8f75462b90a1a7eb5a0be73c6 Mon Sep 17 00:00:00 2001 From: Yatharth Date: Fri, 24 May 2024 22:37:19 +0530 Subject: [PATCH 1/6] time space complexity --- contrib/ds-algorithms/index.md | 1 + .../ds-algorithms/time-space-complexity.md | 227 ++++++++++++++++++ 2 files changed, 228 insertions(+) create mode 100644 contrib/ds-algorithms/time-space-complexity.md diff --git a/contrib/ds-algorithms/index.md b/contrib/ds-algorithms/index.md index 5b52155..9a0d556 100644 --- a/contrib/ds-algorithms/index.md +++ b/contrib/ds-algorithms/index.md @@ -1,4 +1,5 @@ # List of sections - [Section title](filename.md) +- [Time and Space Complexity](time-space-complexity.md) - [Sorting Algorithms](sorting-algorithms.md) diff --git a/contrib/ds-algorithms/time-space-complexity.md b/contrib/ds-algorithms/time-space-complexity.md new file mode 100644 index 0000000..79a072f --- /dev/null +++ b/contrib/ds-algorithms/time-space-complexity.md @@ -0,0 +1,227 @@ +# Time and Space Complexity + +We can solve a problem using one or more algorithms. It's essential to learn how to compare the performance of different algorithms and select the best one for a specific task. +Therefore, it is highly required to use a method to compare the solutions in order to judge which one is more optimal.
The method must be: + +- Regardless of the system or its settings on which the algorithm is executing. +- Demonstrate a direct relationship with the quantity of inputs. +- Able to discriminate between two methods with clarity and precision. + +Two such methods use to analyze algorithms are `time complexity` and `space complexity`. + +## What is Time Complexity? + +The _number of operations an algorithm performs in proportion to the quantity of the input_ is measured by time complexity. It facilitates our investigation of how the performance of the algorithm scales with increasing input size. But in real life, **_time complexity does not refer to the time taken by the machine to execute a particular code_**. + +## Order of Growth and Asymptotic Notations + +The Order of Growth explains how an algorithm's space or running time expands as the amount of the input does. This increase is described via asymptotic language, such Big O notation, which concentrates on the dominating term as the input size approaches infinity and is independent of lower-order terms and machine-specific constants. + +### Common Asymptotic Notation + +1. `Big Oh (O)`: Provides the worst-case scenario for describing the upper bound of an algorithm's execution time. +2. `Big Omega (Ω)`: Provides the best-case scenario and describes the lower bound. +3. `Big Theta (Θ)`: Gives a tight constraint on the running time by describing both the upper and lower bounds. + +### 1. Big Oh (O) Notation + +Big O notation describes how an algorithm behaves as the input size gets closer to infinity and provides an upper bound on the time or space complexity of the method. It helps developers and computer scientists to evaluate the effectiveness of various algorithms without regard to the software or hardware environment. + +To denote asymptotic upper bound, we use O-notation. For a given function `g(n)`, we denote by `O(g(n))` (pronounced "big-oh of g of n") the set of functions: + +$$ +O(g(n)) = \{ f(n) : \exists \text{ positive constants } c \text{ and } n_0 \text{ such that } 0 \leq f(n) \leq c \cdot g(n) \text{ for all } n \geq n_0 \} +$$ + +Graphical representation of Big Oh: + +![BigOh Notation Graph](./images/Time-And-Space-Complexity-BigOh.png) + +Image Credit: www.programiz.com + +### 2. Big Omega (Ω) Notation + +Big Omega (Ω) notation is used to describe the lower bound of an algorithm's running time. It provides a way to express the minimum time complexity that an algorithm will take to complete. In other words, Big Omega gives us a guarantee that the algorithm will take at least a certain amount of time to run, regardless of other factors. + +To denote asymptotic lower bound, we use Omega-notation. For a given function `g(n)`, we denote by `Ω(g(n))` (pronounced "big-omega of g of n") the set of functions: + +$$ +\Omega(g(n)) = \{ f(n) : \exists \text{ positive constants } c \text{ and } n_0 \text{ such that } 0 \leq c \cdot g(n) \leq f(n) \text{ for all } n \geq n_0 \} +$$ + +Graphical representation of Big Omega: + +![BigOmega Notation Graph](./images/Time-And-Space-Complexity-BigOmega.png) + +Image Credit: www.programiz.com + +### 3. Big Theta (Θ) Notation + +Big Theta (Θ) notation provides a way to describe the asymptotic tight bound of an algorithm's running time. It offers a precise measure of the time complexity by establishing both an upper and lower bound, indicating that the running time of an algorithm grows at the same rate as a given function, up to constant factors. + +To denote asymptotic tight bound, we use Theta-notation. For a given function `g(n)`, we denote by `Θ(g(n))` (pronounced "big-theta of g of n") the set of functions: + +$$ +\Theta(g(n)) = \{ f(n) : \exists \text{ positive constants } c_1, c_2, \text{ and } n_0 \text{ such that } 0 \leq c_1 \cdot g(n) \leq f(n) \leq c_2 \cdot g(n) \text{ for all } n \geq n_0 \} +$$ + +Graphical representation of Big Theta: + +![Big Theta Notation Graph](./images/Time-And-Space-Complexity-BigTheta.png) + + +Image Credit: www.programiz.com + + +## Best Case, Worst Case and Average Case +### 1. Best-Case Scenario: +The best-case scenario refers to the situation where an algorithm performs optimally, achieving the lowest possible time or space complexity. It represents the most favorable conditions under which an algorithm operates. + +#### Characteristics: +- Represents the minimum time or space required by an algorithm to solve a problem. +- Occurs when the input data is structured in such a way that the algorithm can exploit its strengths fully. +- Often used to analyze the lower bound of an algorithm's performance. + +#### Example: +Consider the `linear search algorithm` where we're searching for a `target element` in an array. The best-case scenario occurs when the target element is found `at the very beginning of the array`. In this case, the algorithm would only need to make one comparison, resulting in a time complexity of O(1). + + +### 2. Worst-Case Scenario: +The worst-case scenario refers to the situation where an algorithm performs at its poorest, achieving the highest possible time or space complexity. It represents the most unfavorable conditions under which an algorithm operates. + +#### Characteristics: +- Represents the maximum time or space required by an algorithm to solve a problem. +- Occurs when the input data is structured in such a way that the algorithm encounters the most challenging conditions. +- Often used to analyze the upper bound of an algorithm's performance. + +#### Example: +Continuing with the `linear search algorithm`, the worst-case scenario occurs when the `target element` is either not present in the array or located `at the very end`. In this case, the algorithm would need to iterate through the entire array, resulting in a time complexity of O(n), where n is the size of the array. + + +### 3. Average-Case Scenario: +The average-case scenario refers to the expected performance of an algorithm over all possible inputs, typically calculated as the arithmetic mean of the time or space complexity. + +#### Characteristics: +- Represents the typical performance of an algorithm across a range of input data. +- Takes into account the distribution of inputs and their likelihood of occurrence. +- Provides a more realistic measure of an algorithm's performance compared to the best-case or worst-case scenarios. + +#### Example: +- For the `linear search algorithm`, the average-case scenario considers the probability distribution of the target element's position within the array. If the `target element is equally likely to be found at any position in the array`, the average-case time complexity would be O(n/2), as the algorithm would, on average, need to search halfway through the array. + + +## Space Complexity +The memory space that a code utilizes as it is being run is often referred to as space complexity. Additionally, space complexity depends on the machine, therefore rather than using the typical memory units like MB, GB, etc., we will express space complexity using the Big O notation. + +#### Examples of Space Complexity +1. `Constant Space Complexity (O(1))`: Algorithms that operate on a fixed-size array or use a constant number of variables have O(1) space complexity. + +2. `Linear Space Complexity (O(n))`: Algorithms that store each element of the input array in a separate variable or data structure have O(n) space complexity. + +3. `Quadratic Space Complexity (O(n^2))`: Algorithms that create a two-dimensional array or matrix with dimensions based on the input size have O(n^2) space complexity. + + +#### Analyzing Space Complexity +To analyze space complexity: + +- Identify the variables, data structures, and recursive calls used by the algorithm. +- Determine how the space requirements scale with the input size. +- Express the space complexity using Big O notation, considering the dominant terms that contribute most to the overall space usage. + +## Examples to calculate time and space complexity + +#### 1. Print all elements of given array : +Consider each line takes one unit of time to run. So, to simply iterate over an array to print all elements it will take `O(n)` time, where n is the size of array. +Code: +```python +arr = [1,2,3,4] #1 +for x in arr: #2 + print(x) #3 +``` +Here, the 1st statement executes only once. So, it takes one unit of time to run. The for loop consisting of 2nd and 3rd statements executes 4 times. +Also, as the code dosen't take any additional space except the input arr its Space Complexity is O(1) constant. + +#### 2. Linear Search +Linear search is a simple algorithm for finding an element in an array by sequentially checking each element until a match is found or the end of the array is reached. Here's an example of calculating the time and space complexity of linear search: + +```python +def linear_search(arr, target): + for x in arr: # n iterations in worst case + if x == target: # 1 + return True # 1 + return False # If element not found + +# Example usage +arr = [1, 3, 5, 7, 9] +target = 5 +print(linear_search(arr, target)) +``` +`Time Complexity Analysis:` +The for loop iterates through the entire array, which takes O(n) time in the worst case, where n is the size of the array. +Inside the loop, each operation takes constant time (O(1)). +Therefore, the time complexity of linear search is `O(n)`. + + +`Space Complexity Analysis:` +The space complexity of linear search is `O(1)` since it only uses a constant amount of additional space for variables regardless of the input size. + + +#### 3. Binary Search +Binary search is an efficient algorithm for finding an element in a sorted array by repeatedly dividing the search interval in half. Here's an example of calculating the time and space complexity of binary search: + +```python +def binary_search(arr, target): + left = 0 # 1 + right = len(arr) - 1 # 1 + + while left <= right: # log(n) iterations in worst case + mid = (left + right) // 2 # log(n) + + if arr[mid] == target: # 1 + return mid # 1 + elif arr[mid] < target: # 1 + left = mid + 1 # 1 + else: + right = mid - 1 # 1 + + return -1 # If element not found + +# Example usage +arr = [1, 3, 5, 7, 9] +target = 5 +print(binary_search(arr, target)) + +``` +`Time Complexity Analysis:` +The initialization of left and right takes constant time (O(1)). +The while loop runs for log(n) iterations in the worst case, where n is the size of the array. +Inside the loop, each operation takes constant time (O(1)). +Therefore, the time complexity of binary search is `O(log n)`. + +`Space Complexity Analysis:` +The space complexity of binary search is `O(1)` since it only uses a constant amount of additional space for variables regardless of the input size. + +#### 4. Fibbonaci Sequence +Let's consider an example of a function that generates Fibonacci numbers up to a given index and stores them in a list. In this case, the space complexity will not be constant because the size of the list grows with the Fibonacci sequence. + +```python +def fibonacci_sequence(n): + fib_list = [0, 1] # Initial Fibonacci sequence with first two numbers + + while len(fib_list) < n: # O(n) iterations in worst case + next_fib = fib_list[-1] + fib_list[-2] # Calculating next Fibonacci number + fib_list.append(next_fib) # Appending next Fibonacci number to list + + return fib_list + +# Example usage +n = 10 +fib_sequence = fibonacci_sequence(n) +print(fib_sequence) +``` +`Time Complexity Analysis:` +The while loop iterates until the length of the Fibonacci sequence list reaches n, so it takes `O(n)` iterations in the `worst case`.Inside the loop, each operation takes constant time (O(1)). + +`Space Complexity Analysis:` +The space complexity of this function is not constant because it creates and stores a list of Fibonacci numbers. +As n grows, the size of the list also grows, so the space complexity is O(n), where n is the index of the last Fibonacci number generated. \ No newline at end of file From 34e349e9f30329c5f0dea478ca41ede8f2bcbc9a Mon Sep 17 00:00:00 2001 From: Yatharth Date: Fri, 24 May 2024 22:40:06 +0530 Subject: [PATCH 2/6] graph images added --- .../images/Time-And-Space-Complexity-BigOh.png | Bin 0 -> 17286 bytes .../Time-And-Space-Complexity-BigOmega.png | Bin 0 -> 15822 bytes .../Time-And-Space-Complexity-BigTheta.png | Bin 0 -> 21022 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 contrib/ds-algorithms/images/Time-And-Space-Complexity-BigOh.png create mode 100644 contrib/ds-algorithms/images/Time-And-Space-Complexity-BigOmega.png create mode 100644 contrib/ds-algorithms/images/Time-And-Space-Complexity-BigTheta.png diff --git a/contrib/ds-algorithms/images/Time-And-Space-Complexity-BigOh.png b/contrib/ds-algorithms/images/Time-And-Space-Complexity-BigOh.png new file mode 100644 index 0000000000000000000000000000000000000000..510b4d8117ba9b945e8a18038861fc6256dda749 GIT binary patch literal 17286 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 Z&ui$-5@*Z6^P;ZvjG$c@YnQk`q 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/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 IYPlr-ALFsiXaE2J literal 0 HcmV?d00001 From 6db3d06e0f50d1c7bf28b43d6149c39ddff818d3 Mon Sep 17 00:00:00 2001 From: Yatharth Date: Fri, 24 May 2024 22:46:22 +0530 Subject: [PATCH 3/6] graph queues in index --- contrib/ds-algorithms/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contrib/ds-algorithms/index.md b/contrib/ds-algorithms/index.md index 6569868..4f458f7 100644 --- a/contrib/ds-algorithms/index.md +++ b/contrib/ds-algorithms/index.md @@ -2,6 +2,8 @@ - [Section title](filename.md) - [Time Space Complexity](time-space-complexity.md) +- [Queues in Python](Queues.md) +- [Graphs](graph.md) - [Sorting Algorithms](sorting-algorithms.md) - [Recursion and Backtracking](recursion.md) - [Divide and Conquer Algorithm](divide-and-conquer-algorithm.md) From b819dfeaf7af4ca999fce1fa74da124b98bbad08 Mon Sep 17 00:00:00 2001 From: Yatharth Date: Mon, 27 May 2024 13:23:28 +0530 Subject: [PATCH 4/6] figma drawn images --- .../Time-And-Space-Complexity-BigOh.png | Bin 17286 -> 12856 bytes .../Time-And-Space-Complexity-BigOmega.png | Bin 15822 -> 9438 bytes .../Time-And-Space-Complexity-BigTheta.png | Bin 21022 -> 13438 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/contrib/ds-algorithms/images/Time-And-Space-Complexity-BigOh.png b/contrib/ds-algorithms/images/Time-And-Space-Complexity-BigOh.png index 510b4d8117ba9b945e8a18038861fc6256dda749..f7480941bc597a9bc6f8f2d4efdd0d8075ffd429 100644 GIT binary patch literal 12856 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 VCGRUz;F}~Oh^n?qsq(Y8{{vz#Cgk3J;_lc~U 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 literal 21022 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/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 IYPlr-ALFsiXaE2J From 976eb8cffd558f544efd27d2be4e30303a236191 Mon Sep 17 00:00:00 2001 From: Ankit Mahato Date: Fri, 31 May 2024 05:10:48 +0530 Subject: [PATCH 5/6] Update index.md --- contrib/ds-algorithms/index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/contrib/ds-algorithms/index.md b/contrib/ds-algorithms/index.md index 3645f82..31cff39 100644 --- a/contrib/ds-algorithms/index.md +++ b/contrib/ds-algorithms/index.md @@ -1,7 +1,6 @@ # List of sections -- [Section title](filename.md) -- [Time Space Complexity](time-space-complexity.md) +- [Time & Space Complexity](time-space-complexity.md) - [Queues in Python](Queues.md) - [Graphs](graph.md) - [Sorting Algorithms](sorting-algorithms.md) From db796bfc2b1a30f5167e5f5b4e4cbe73db7ed0ca Mon Sep 17 00:00:00 2001 From: Ankit Mahato Date: Fri, 31 May 2024 05:19:31 +0530 Subject: [PATCH 6/6] Update time-space-complexity.md --- .../ds-algorithms/time-space-complexity.md | 86 +++++++++++-------- 1 file changed, 51 insertions(+), 35 deletions(-) diff --git a/contrib/ds-algorithms/time-space-complexity.md b/contrib/ds-algorithms/time-space-complexity.md index 79a072f..eeadd64 100644 --- a/contrib/ds-algorithms/time-space-complexity.md +++ b/contrib/ds-algorithms/time-space-complexity.md @@ -1,7 +1,10 @@ # Time and Space Complexity We can solve a problem using one or more algorithms. It's essential to learn how to compare the performance of different algorithms and select the best one for a specific task. -Therefore, it is highly required to use a method to compare the solutions in order to judge which one is more optimal.
The method must be: + +Therefore, it is highly required to use a method to compare the solutions in order to judge which one is more optimal. + +The method must be: - Regardless of the system or its settings on which the algorithm is executing. - Demonstrate a direct relationship with the quantity of inputs. @@ -35,9 +38,7 @@ $$ Graphical representation of Big Oh: -![BigOh Notation Graph](./images/Time-And-Space-Complexity-BigOh.png) - -Image Credit: www.programiz.com +![BigOh Notation Graph](images/Time-And-Space-Complexity-BigOh.png) ### 2. Big Omega (Ω) Notation @@ -51,9 +52,7 @@ $$ Graphical representation of Big Omega: -![BigOmega Notation Graph](./images/Time-And-Space-Complexity-BigOmega.png) - -Image Credit: www.programiz.com +![BigOmega Notation Graph](images/Time-And-Space-Complexity-BigOmega.png) ### 3. Big Theta (Θ) Notation @@ -67,61 +66,64 @@ $$ Graphical representation of Big Theta: -![Big Theta Notation Graph](./images/Time-And-Space-Complexity-BigTheta.png) - - -Image Credit: www.programiz.com - +![Big Theta Notation Graph](images/Time-And-Space-Complexity-BigTheta.png) ## Best Case, Worst Case and Average Case + ### 1. Best-Case Scenario: + The best-case scenario refers to the situation where an algorithm performs optimally, achieving the lowest possible time or space complexity. It represents the most favorable conditions under which an algorithm operates. #### Characteristics: -- Represents the minimum time or space required by an algorithm to solve a problem. + +- Represents the minimum time or space required by an algorithm to solve a problem. - Occurs when the input data is structured in such a way that the algorithm can exploit its strengths fully. - Often used to analyze the lower bound of an algorithm's performance. #### Example: -Consider the `linear search algorithm` where we're searching for a `target element` in an array. The best-case scenario occurs when the target element is found `at the very beginning of the array`. In this case, the algorithm would only need to make one comparison, resulting in a time complexity of O(1). +Consider the `linear search algorithm` where we're searching for a `target element` in an array. The best-case scenario occurs when the target element is found `at the very beginning of the array`. In this case, the algorithm would only need to make one comparison, resulting in a time complexity of `O(1)`. ### 2. Worst-Case Scenario: + The worst-case scenario refers to the situation where an algorithm performs at its poorest, achieving the highest possible time or space complexity. It represents the most unfavorable conditions under which an algorithm operates. #### Characteristics: + - Represents the maximum time or space required by an algorithm to solve a problem. - Occurs when the input data is structured in such a way that the algorithm encounters the most challenging conditions. - Often used to analyze the upper bound of an algorithm's performance. #### Example: -Continuing with the `linear search algorithm`, the worst-case scenario occurs when the `target element` is either not present in the array or located `at the very end`. In this case, the algorithm would need to iterate through the entire array, resulting in a time complexity of O(n), where n is the size of the array. +Continuing with the `linear search algorithm`, the worst-case scenario occurs when the `target element` is either not present in the array or located `at the very end`. In this case, the algorithm would need to iterate through the entire array, resulting in a time complexity of `O(n)`, where `n` is the size of the array. ### 3. Average-Case Scenario: + The average-case scenario refers to the expected performance of an algorithm over all possible inputs, typically calculated as the arithmetic mean of the time or space complexity. #### Characteristics: + - Represents the typical performance of an algorithm across a range of input data. - Takes into account the distribution of inputs and their likelihood of occurrence. - Provides a more realistic measure of an algorithm's performance compared to the best-case or worst-case scenarios. #### Example: -- For the `linear search algorithm`, the average-case scenario considers the probability distribution of the target element's position within the array. If the `target element is equally likely to be found at any position in the array`, the average-case time complexity would be O(n/2), as the algorithm would, on average, need to search halfway through the array. +For the `linear search algorithm`, the average-case scenario considers the probability distribution of the target element's position within the array. If the `target element is equally likely to be found at any position in the array`, the average-case time complexity would be `O(n/2)`, as the algorithm would, on average, need to search halfway through the array. ## Space Complexity + The memory space that a code utilizes as it is being run is often referred to as space complexity. Additionally, space complexity depends on the machine, therefore rather than using the typical memory units like MB, GB, etc., we will express space complexity using the Big O notation. #### Examples of Space Complexity + 1. `Constant Space Complexity (O(1))`: Algorithms that operate on a fixed-size array or use a constant number of variables have O(1) space complexity. - 2. `Linear Space Complexity (O(n))`: Algorithms that store each element of the input array in a separate variable or data structure have O(n) space complexity. - 3. `Quadratic Space Complexity (O(n^2))`: Algorithms that create a two-dimensional array or matrix with dimensions based on the input size have O(n^2) space complexity. - #### Analyzing Space Complexity + To analyze space complexity: - Identify the variables, data structures, and recursive calls used by the algorithm. @@ -130,18 +132,23 @@ To analyze space complexity: ## Examples to calculate time and space complexity -#### 1. Print all elements of given array : +#### 1. Print all elements of given array + Consider each line takes one unit of time to run. So, to simply iterate over an array to print all elements it will take `O(n)` time, where n is the size of array. + Code: + ```python arr = [1,2,3,4] #1 for x in arr: #2 print(x) #3 ``` -Here, the 1st statement executes only once. So, it takes one unit of time to run. The for loop consisting of 2nd and 3rd statements executes 4 times. + +Here, the 1st statement executes only once. So, it takes one unit of time to run. The for loop consisting of 2nd and 3rd statements executes 4 times. Also, as the code dosen't take any additional space except the input arr its Space Complexity is O(1) constant. #### 2. Linear Search + Linear search is a simple algorithm for finding an element in an array by sequentially checking each element until a match is found or the end of the array is reached. Here's an example of calculating the time and space complexity of linear search: ```python @@ -156,17 +163,20 @@ arr = [1, 3, 5, 7, 9] target = 5 print(linear_search(arr, target)) ``` -`Time Complexity Analysis:` -The for loop iterates through the entire array, which takes O(n) time in the worst case, where n is the size of the array. -Inside the loop, each operation takes constant time (O(1)). + +**Time Complexity Analysis** + +The for loop iterates through the entire array, which takes O(n) time in the worst case, where n is the size of the array. +Inside the loop, each operation takes constant time (O(1)). Therefore, the time complexity of linear search is `O(n)`. +**Space Complexity Analysis** -`Space Complexity Analysis:` The space complexity of linear search is `O(1)` since it only uses a constant amount of additional space for variables regardless of the input size. #### 3. Binary Search + Binary search is an efficient algorithm for finding an element in a sorted array by repeatedly dividing the search interval in half. Here's an example of calculating the time and space complexity of binary search: ```python @@ -190,18 +200,21 @@ def binary_search(arr, target): arr = [1, 3, 5, 7, 9] target = 5 print(binary_search(arr, target)) - ``` -`Time Complexity Analysis:` -The initialization of left and right takes constant time (O(1)). -The while loop runs for log(n) iterations in the worst case, where n is the size of the array. -Inside the loop, each operation takes constant time (O(1)). + +**Time Complexity Analysis** + +The initialization of left and right takes constant time (O(1)). +The while loop runs for log(n) iterations in the worst case, where n is the size of the array. +Inside the loop, each operation takes constant time (O(1)). Therefore, the time complexity of binary search is `O(log n)`. -`Space Complexity Analysis:` +**Space Complexity Analysis** + The space complexity of binary search is `O(1)` since it only uses a constant amount of additional space for variables regardless of the input size. #### 4. Fibbonaci Sequence + Let's consider an example of a function that generates Fibonacci numbers up to a given index and stores them in a list. In this case, the space complexity will not be constant because the size of the list grows with the Fibonacci sequence. ```python @@ -219,9 +232,12 @@ n = 10 fib_sequence = fibonacci_sequence(n) print(fib_sequence) ``` -`Time Complexity Analysis:` + +**Time Complexity Analysis** + The while loop iterates until the length of the Fibonacci sequence list reaches n, so it takes `O(n)` iterations in the `worst case`.Inside the loop, each operation takes constant time (O(1)). -`Space Complexity Analysis:` -The space complexity of this function is not constant because it creates and stores a list of Fibonacci numbers. -As n grows, the size of the list also grows, so the space complexity is O(n), where n is the index of the last Fibonacci number generated. \ No newline at end of file +**Space Complexity Analysis** + +The space complexity of this function is not constant because it creates and stores a list of Fibonacci numbers. +As n grows, the size of the list also grows, so the space complexity is O(n), where n is the index of the last Fibonacci number generated.