コード例 #1
0
ファイル: uppg3.c プロジェクト: h4xxel/algdat
int binary_search_recursive(int *seq, int lbound, int ubound, int val) {
	int i=(lbound+ubound)/2;
	if(ubound<lbound)
		return -1;
	if(seq[i]==val)
		return i;
	else if(seq[i]>val)
		return binary_search_recursive(seq, lbound, i-1, val);
	return binary_search_recursive(seq, i+1, ubound, val);
}
コード例 #2
0
// plain ol' binary search, this time recursive
int binary_search_recursive(int *array, int low, int high, int value)
{
	int middle = (low + high) / 2;
	if(low > high)
		return -1;
	if(array[middle] == value)
	{
		return middle;
	}
	else if(array[middle] < value)
	{
		return binary_search_recursive(array, middle+1, high, value);
	}
	else
	{
		return binary_search_recursive(array, low, middle-1, value);
	}
}
コード例 #3
0
ファイル: binary_search.c プロジェクト: cptjazz/rheo
// __expected:binary_search_recursive(imin => $_retval, imax => $_retval, key => $_retval, A => $_retval, A => A)
int binary_search_recursive(int A[], int key, int imin, int imax)
{
  // test if array is empty
  if (imax < imin)
    // set is empty, so return value showing not found
    return KEY_NOT_FOUND;
  else
  {
    // calculate midpoint to cut set in half
    int imid = midpoint(imin, imax);
    // three-way comparison
    if (A[imid] > key)
      // key is in lower subset
      return binary_search_recursive(A, key, imin, imid - 1);
    else if (A[imid] < key)
      // key is in upper subset
      return binary_search_recursive(A, key, imid + 1, imax);
    else
      // key has been found
      return imid;
  }
}
コード例 #4
0
int main()
{
	int arr[] = { 5, 3, 2, 4, 1, 4, 3, 2, 6, 2, 7 };
	int length = sizeof(arr) / sizeof(int);
	print_array(arr, length);

	bubble_sort(arr, length);
	//selection_sort(arr, length);
	//insertion_sort(arr, length);
	print_array(arr, length);

	printf("%d\n", binary_search(arr, length, 2));
	printf("%d\n", binary_search_recursive(arr, 0, length, 2));
	return 0;
}