big-o

Worst Case Time Complexity for an algorithm

What is the Worst Case Time Complexity t(n) :- I'm reading this book about algorithms and as an example how to get the T(n) for .... like the selection Sort Algorithm Like if I'm dealing with the selectionSort(A[0..n-1]) //sorts a given array by selection sort //input: An array A[0..n - 1] of orderable elements. //output: Array A[0.....

Computational complexity of Fibonacci Sequence

I understand Big-O notation, but I don't know how to calculate it for many functions. In particular, I've been trying to figure out the computational complexity of the naive version of the Fibonacci sequence: int Fib(int n) { if (n <= 1) return 1; else return Fib(n - 1) + Fib(n - 2); } What is the computational...

What is the Big-O of a nested loop, where number of iterations in the inner loop is determined by the current iteration of the outer loop?

What is the Big-O time complexity of the following nested loops: for(int i = 0; i < N; i ++) { for(int j = i + 1; j < N; j++) { System.out.println("i = " + i + " j = " + j); } } Would it be O(n^2) still? ...

Difference between lower bound and tight bound?

With the reference of this answer, what is Theta (tight bound)? Omega is lower bound, quite understood, the minimum time an algorithm may take. And we know Big-O is for upper bound, means the maximum time an algorithm may take. But I have no idea regarding the Theta. ...

What is the O time in determining if a value is in a sorted array?

I have a sorted array of 5000 integers. How fast can I tell if a random integer is a member of the array? An answer in general, C and Ruby would be nice. The array values are of the form c*c+1 where c can be any integer from 1 to 5000 i.e. [2, 5, 10, 17, 26, 37, 50 ...] ...

What is the difference between Θ(n) and O(n)?

Sometimes I see Θ(n) with the strange Θ symbol with something in the middle of it, and sometimes just O(n). Is it just laziness of typing because nobody knows how to type this symbol, or does it mean something different? ...

Plain English explanation of Big O

What is a plain English explanation of Big O? With as little formal definition as possible and simple mathematics. ...

Algorithm Speed Order of

Hi folks, Sometimes I get totally fooled trying to estimate an algorithm's speed with the O(x) notation, I mean, I can really point out when the order is O(n) or O(mxn), but for those that are O(lg(n)) or O(C(power n)) I think that I am missing something there... So, what are your tips and tricks for an easy estimate with a fast overloo...

Big-O summary for Java Collections Framework implementations?

I may be teaching a "Java crash-course" soon. While it is probably safe to assume that the audience members will know Big-O notation, it is probably not safe to assume that they will know what the order of the various operations on various collection implementations is. I could take time to generate a summary matrix myself, but if it's...

How much is it fair to assume about implementation when doing big-O calculations?

When programmers versed in a wide variety of languages are discussing the merits of an algorithm expressed in pseudocode, and the talk turns to efficiency, how much should be assumed about the performance of ultimate the language? For example, when I see something like: add x to the list of xs I see an O(1) operation (cons), while so...

Are there any tools that can determine perform code analysis for Big-O complexity?

I haven't seen anything out there, and I suspect the difficulty with defining "n" since for generally for analyzing a complex function there'd be more than just one or two variables for defining. There are analysis tools for cyclomatic complexity but are there ones for time (and/or space) complexity? If so which ones, if not, why not...

Effective ways of finding an element in a Javascript array

I am using an array with titles. Each titles index corresponds to an id in a database which contains html for that given title. Lets say I have a string which contains one of the titles. title = "why-birds-fly"; titles[] // an array which contains all the titles To use the string "title" to get the corresponding id I could do: for (...

computational complexity exercise

I'm reading "Data structures and algorithms" from Aho, Hopcroft & Ullman, and I'm confused with exercise 1.12 B: Which is the computational complexity (expressed in Big O notation) of this Pascal procedure? procedure mysterious( n: integer ); var i, j, k: integer; begin for i := 1 to n - 1 do for j ...

What does "O(1) access time" mean?

I have seen this term "O(1) access time" used to mean "quickly" but I don't understand what it means. The other term that I see with it in the same context is "O(n) access time". Could someone please explain in a simple way what these terms mean? See Also What is Big O notation? Do you use it? Big-O for Eight Year Olds? ...

Database query time complexity

I'm pretty new to databases, so forgive me if this is a silly question. In modern databases, if I use an index to access a row, I believe this will be O(1) complexity. But if I do a query to select another column, will it be O(1) or O(n)? Does the database have to iterate through all the rows, or does it build a sorted list for each col...

How to know when Big O is Logarithmic?

My question arises from the post "Plain English Explanation of Big O". I don't know the exact meaning for logarithmic complexity. I know that I can make a regression between the time and the number of operations and calculate the X-squared value, and determine so the complexity. However, I want to know a method to determine it quickly on...

Good refresher course on 'O(N)' type stuff?

Learned all about computing algorithm costs in College, but that was so long ago I forgot it all. Is there any sort of walkthrough that goes over the whole subject matter? I feel as though there was more than I currently remember. I want to refresh some of my core skills. ...

Finding Big-O with multiple nested loops?

int num = n/4; for (int i = 1; i <= num; i++) { for (int j = 1; j <= n; j++) { for (int k = 1; k <= n; k++) { int count = 1; } } } According to the books I have read, this code should be O((n^3)/4). But apparently its not. to find the Big-O for nested loops are you supposed to multiply the bounds? So...

Why is inserting at the end of a dynamic array O(1) while inserting in the middle is O(n)?

Accordingly to the Wikipedia article on dynamic arrays, inserting/deleting at the end of the array is O(1) while inserting/deleting from the middle is O(n). Why exactly is that? Also - if I have a dynamic array with 5 elements and I insert a new element at position 6 the operation is O(n) whereas if I use the function to append to the ...

Why is inserting in the middle of a linked list O(1)?

According to the Wikipedia article on linked lists, inserting in the middle of a linked list is considered O(1). I would think it would be O(n). Wouldn't you need to locate the node which could be near the end of the list? Does this analysis not account for the finding of the node operation (though it is required) and just the inser...