@Rafi: Try this:
 
int arrExsits( int* arr, int size, int elem)
{
    int temp = arr[0];
    arr[0] = elem;
    while( arr[--size] != elem );
    arr[0] = temp;
    return a[size] == elem ? size : -1;
}
n+1 comparisons, and it leaves the array unaltered.
 
Dave

On Sunday, September 30, 2012 4:27:27 AM UTC-5, rafi wrote:

> Hi
> i was in an interview and was given a simple function
> int arrExsits(int* arr,int size,int elem){
> for (int i=0;i<size;++i)
>     if(elem==arr[i])
>        return i;
> return -1;
> }
> this function does 2n compares 
> n- the if statment
> n-check that i is smaller then size
> i was suppose to give an optimal (less compares) solution so i gave
>
> int arrExsits(int* arr,int size,int elem){
> if (arr[size-1]==elem)
>     return size-1;
> arr[size-1]=elem]
> for (int i=0;;++i)
>     if(elem==arr[i]){
>         if (i!=size-1)
>             return i;
> return -1;
> }
> this solution works and it has n+2 compares the first one another n and 
> the second inner if.
> they told me it's good (and I've passed) but they told just for my 
> knowledge that there is a better N compare solution.
> I've searched the web but couldn't find it.
> anybody knows?
> Thanks 
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/algogeeks/-/xf30WpSdP_oJ.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to