Ejemplo n.º 1
0
int min_search(int *arr, int low, int high, int key)
{
	if (high < low)
		return 0;

	int middle = (high + low) / 2;

	if (arr[middle] < arr[middle-1])
		return middle;

	if (arr[middle] >= key) {
		return min_search(arr, middle+1, high, key);
	} else {
		return min_search(arr, low, middle-1, key);
	}
}
Ejemplo n.º 2
0
void main() {
  list h, c, c_pre;
  _memcad("add_inductive(h, list)");
  _memcad("assume(h != 0)");
  min = c_pre = h;
  min_pre = null;
  c = h->next;
  min_search(c, c_pre);
}
Ejemplo n.º 3
0
void min_search(list c, list c_pre ) {
  if (c == null)
    return;
  else if (c->data < min->data){
    min = c;
    min_pre = c_pre;
  }
  min_search (c->next, c);
}
Ejemplo n.º 4
0
int main()
{
	int i, ret;

	for (i = 0; i < MAX_SIZE; i++)
		arr[i] = rand() % MAX_SIZE;
	qsort(arr, MAX_SIZE, sizeof(int), compare);

	for (i = 0; i < MAX_SIZE; i++) {
		/* Circular shift by 1 element for each iteration */
		int temp = arr[0];
		memmove(arr, &arr[1], (MAX_SIZE-1) * sizeof(int));
		arr[MAX_SIZE-1] = temp;
		ret = min_search(arr, 0, MAX_SIZE-1, arr[0]);
		printf("found at %d\n", ret);
	}

	return 0;
}