Exemplo n.º 1
0
/*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;
}