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; }
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); }