Skip to content

Instantly share code, notes, and snippets.

@hmenn
Last active December 4, 2016 13:51
Show Gist options
  • Select an option

  • Save hmenn/a3c4868ce3ca541ef642069294b8f425 to your computer and use it in GitHub Desktop.

Select an option

Save hmenn/a3c4868ce3ca541ef642069294b8f425 to your computer and use it in GitHub Desktop.
This algorithm finds element in an ordered array which is i=A[i]
#include <stdlib.h>
#include <stdio.h>
int findEqualIndex(int arr[],int start,int end);
int main(){
int arr[6]={-10,-5,-1,0,4,5};
int arr2[5]={0,2,5,8,7};
int res = findEqualIndex(arr,0,5);
printf("Res:%d\n",res);
return 0;
}
int findEqualIndex(int arr[],int start,int end){
int mid= (start+end)/2;
for(int i=start;i<=end;++i){
printf("%d-",arr[i]);
}
printf("\nStart:%d - End%d\n",start,end);
printf("mid:%d, arr[mid]:%d\n",mid,arr[mid]);
if(start>end){
return -1;
}
if(mid==arr[mid]){
printf("mid=arr[mid]\n");
return mid;
}else if(mid>arr[mid]){
printf("mid:%d>arr[mid]:%d\n",mid,arr[mid]);
return findEqualIndex(arr,mid+1,end);
}else if(mid<arr[mid]){
printf("mid:%d<arr[mid]:%d\n",mid,arr[mid]);
return findEqualIndex(arr,start,mid-1);
}else return -1;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment