Exemple #1
0
int main()
{
	int *a;
	int i;

	a = (int *) malloc(sizeof(int) * N_ELEMENTS);

	a[0] = 0;
	for (i = 1; i < N_ELEMENTS; i++) {
		if (rand() % 2)
			a[i] = a[i - 1];
		else
			a[i] = a[i - 1] + 3;
	}

#if 0
	for (i = 0; i < 10000; i++) {
		int r1, r2, r3;
		printf("s%d\n", i);
		r1 = sequential_search(i, a, N_ELEMENTS);
		printf("b%d\n", i);
		r2 = binary_search(i, a, N_ELEMENTS);
		printf("t%d\n", i);
		r3 = ternary_search(i, a, N_ELEMENTS);

		if (r1 != -1 && a[r1] != i) {
			printf("error!");
			exit(0);
		}

		if (r2 != -1 && a[r2] != i) {
			printf("error!");
			exit(0);
		}

		if (r3 != -1 && a[r3] != i) {
			printf("error!");
			exit(0);
		}
	}
#endif

	START_TIME;
	printf("%d\n", SEARCH(120000000, a, N_ELEMENTS));
	printf("%d\n", SEARCH(1000, a, N_ELEMENTS));
	printf("%d\n", SEARCH(0, a, N_ELEMENTS));
	printf("%d\n", SEARCH(3, a, 1));
	printf("%d\n", SEARCH(6, a, 2));
	printf("%d\n", SEARCH(9, a, 4));
	printf("%d\n", SEARCH(9, a, 20));
	END_TIME;
	return 0;
}
Exemple #2
0
int main() {
    freopen("tests.txt", "r", stdin);
    int num_tests;
    scanf("%d",&num_tests);

    for (int t = 0; t < num_tests; t++){
        int n;
        scanf("%d",&n);
        int array[n];
        for (int i = 0; i < n; i++){
            scanf("%d",&array[i]);
        }
        printf("Test# %d : %d \n",t+1,array[ternary_search(array, n)]);
    }
    return 0;
}
double ternary_search_min(F f, double l, double r) {
  return ternary_search(greater<double>(), f, l, r);
}
double ternary_search_max(F f, double l, double r) {
  return ternary_search(less<double>(), f, l, r);
}