Denny wrote:
> We can also solve it using the devide-and-conquer method in o(log N),

To check whether an array of N > 1 elements is sorted, you need to
look at every element. This takes at least Omega(N) time.

> as below:
>
> Split the original array A into two equal sub-arrays of size N/2, say
> A1, A2. The original array A is sorted if:
> - If both A1 and A2 are in sorted order, and
> - last_element of A1 <=  first_element_of A2
>
> the above method corresponds to the recursive eq: T(N) = 2 T(N/2) + 1.

This recurrence leads to a linear time algorithm, not logarithmic.

>
>
> Googmeister wrote:
> > Terry wrote:
> > > hi,
> > >  this is regarding a problem from programming pearls by jon bentley
> > > column 5.
> > >   I have few questions ,
> > > 1) how to check if an array is sorted or not.  Can it be done it sub -
> > > linear time
> >
> > No, if you don't look at all n elements, there's no way to no if
> > it's sorted.
> >
> > > 2) In section 5.8 problem 5, he describes saying that checking a  array
> > > is sorted or not takes n-1 operations. How can you add partial checking
> > > to the function at significantly less cost.
> >
> > I suspect he's talking about binary search. A common
> > mistake is to apply binary search on a non-sorted array.
> > Checking whether the array is sorted each time would
> > ruin the main benefit of binary search (logarithmic time).
> > Instead, you could verify that the log n elements binary
> > search probes (and perhaps they're immediate neighbors)
> > are in the right order. This partial checking takes only
> > O(log n) time.


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/algogeeks
-~----------~----~----~----~------~----~------~--~---

Reply via email to