views:

375

answers:

2

Hello I just have a simple question, why is the big O notation of a sorted array O(log N)? It will be a sorted array.

+2  A: 

The question is somewhat bogus. The complexity doesn't apply to the array but actually to the algorithm that sorts the array (I assume you mean runtime complexity not memory).

So depending on the used algorithm the X in O(X) for sorting an array can vary strongly.

Check pages these for a starter on complexity in general and in special case array sorting.

Introduction to algorithm complexity

Sorting Arrays: Algorithms and Efficiency

Wikipedia: Computational complexity theory

jitter
+1  A: 

Big O notation generally makes sense in context of an algorithm. What operation are you considering when you say the Big O notation is O(log n).

If you mean searching, then it is O(log n) because you can use binary search. Which essentially means you look at the middle element of you array, and if it is greater than the element you're searching for, you then search the larger half (in the same way), and vice versa (assuming you haven't yet found your element of course). You can read a more detailed description on wikipedia.

At each step of searching (looking the middle element), you are cutting the size of the array you must search in half since you can now know which side of the middle element your search element must lie. Of course this only works with sorted arrays. For non-sorted arrays, the only search algorithm you can use is linear search where you examine every element in the array which will take on average n/2 inspections.

In general, Big O describes the runtime characteristics of algorithms, so you can't just ask, what is the Big O of a sorted array, it must be some operation on the array. However, you can consider Big O in terms of the space (memory) taken by some data structure. In this case a sorted array still takes O(n) space to store N elements.

Daniel Brotherston