GATE CSE
First time here? Checkout the FAQ!
x
+1 vote
123 views
Given a sorted array of distinct interger A[1...N] , you want to find out whether there is an index "i" for which A[i] =i . if this problem is solved using divide and conquer method,then find time complexity.
asked in Algorithms by Veteran (21.6k points)  
retagged by | 123 views

1 Answer

+2 votes

We can use modification of binary search here :

Basically we have to find index i such that a[i] = i in other a[i] - i = 0.

Now as the array is sorted , so all the indices j which is less than i will satisfy the property : a[j] - j <= 0 as the array is sorted so a[j] will be at least 1 less than a[i] and left index will also be at least 1 less than i hence the conclusion.

Similarly to the right of the ith index element , we have a[j] - j >= 0 .

So the key idea is just we find :

mid = left + right / 2 where left and right are the boundary indices and then check whether mid is the ith index we are looking for using the above mentioned property.For this we compare only its immediate left and right neighbours.

If it satisfies , well and good and we will report our final answer which is index i as mid only else we apply binary search recursively like normal one.

So time complexity remains the same i.e. O(logn)

Reference : http://stackoverflow.com/questions/4101141/algorithm-to-find-if-there-is-any-i-so-that-arrayi-equals-i

answered by Veteran (59.6k points)  
can u give solution for :
0,1,2,3,4,5,7,8,9,10,11,12

Here all will satisfy the given property but the problem says we need to report any such element.There may be more than 1 such elements in the array.But we are interested to find any one of them only.

As the problem says :

you want to find out whether there is an index "i" for which A[i] =i 

So even finding one such index will do..And remember this solution assumes that no duplicate elements should be there.

In this scenario hence we require O(logn) time only. 

not all A[6] there is 7...  so 7-6 >0 so we will go right end rt??
Yes this will correspond to best case..Hence O(1) for your input instance.
Top Users Jan 2017
  1. Debashish Deka

    8126 Points

  2. sudsho

    5042 Points

  3. Habibkhan

    4706 Points

  4. Vijay Thakur

    4458 Points

  5. Bikram

    4348 Points

  6. saurabh rai

    4212 Points

  7. Arjun

    4010 Points

  8. santhoshdevulapally

    3722 Points

  9. GateSet

    3292 Points

  10. Sushant Gokhale

    3286 Points

Monthly Topper: Rs. 500 gift card

19,122 questions
24,033 answers
52,725 comments
20,276 users