/*recursive*/ int binarySearch1(int a[],int needle,int start,int end) { int middle = (start+end)/2; if(start > end) return -1;//not 0,becuase the needle maybe at the 0th element else if(needle < a[middle]) return binarySearch1(a,needle,start,middle-1); else if(needle > a[middle]) return binarySearch1(a,needle,middle+1,end); else if(needle == a[middle]) return middle; }
int binarySearch1(int *arr, int low, int high, int key){ int mid, i; if (high>low){ mid = (low + high) / 2; if (arr[mid] == key) return mid; else if (key < arr[mid]) return binarySearch1(arr, low, mid - 1, key); else return binarySearch1(arr, mid + 1, high, key); } else return low; }
int * sortedArrayInsertNumber(int *Arr, int len, int num) { int pos,temp1,temp2,i; if (Arr==NULL||len < 1) return NULL; Arr = (int *)realloc(Arr, (len + 1)*sizeof(int)); pos = binarySearch1(Arr, 0, len - 1, num); if (pos != 0) pos = pos + 1; temp1 = Arr[pos]; Arr[pos] = num; for (i = pos+1; i < len-1; i++){ temp2 = Arr[i]; Arr[i] = temp1; temp1 = temp2; } return Arr; }