#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <assert.h>
#include <time.h>
bool binarysearch(int value, int values[], int n, int lo, int hi) {
int mid = (hi + lo) / 2;
if (lo <= hi) {
if (values[mid] == value) {
printf("Value found %d at index %d \n", value
, mid
); return true;
}
else if (values[mid] > value)
return binarysearch(value, values, n, lo, mid);
else
return binarysearch(value, values, n, mid + 1, hi);;
}
else return 0;
}
/* Returns an integer in the range [0, n).
*
* Uses rand(), and so is affected-by/affects the same seed.
*/
int randint(int n) {
if ((n - 1) == RAND_MAX) {
} else {
// Chop off all of the values that would cause skew...
long end = RAND_MAX / n; // truncate skew
end *= n;
// ... and ignore results from rand() that fall above that limit.
// (Worst case the loop condition should succeed 50% of the time,
// so we can expect to bail out of this loop pretty quickly.)
int r;
while ((r
= rand()) >= end
);
return r % n;
}
}
main() {
int i, n, value;
int values[] = {1, 2, 3, 4, 5, 6};
int hi = values[n - 1];
int lo = values[0];
int random
= rand() % 14; if (!binarysearch(random, values, n, 0, 5))
printf("Number %d not present in array\n", random
); }
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRib29sLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPGFzc2VydC5oPgojaW5jbHVkZSA8dGltZS5oPgoKYm9vbCBiaW5hcnlzZWFyY2goaW50IHZhbHVlLCBpbnQgdmFsdWVzW10sIGludCBuLCBpbnQgbG8sIGludCBoaSkgewogICAgaW50IG1pZCA9IChoaSArIGxvKSAvIDI7CiAgICBpZiAobG8gPD0gaGkpIHsKICAgICAgICBpZiAodmFsdWVzW21pZF0gPT0gdmFsdWUpIHsKICAgICAgICAgICAgcHJpbnRmKCJWYWx1ZSBmb3VuZCAlZCBhdCBpbmRleCAlZCBcbiIsIHZhbHVlLCBtaWQpOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAodmFsdWVzW21pZF0gPiB2YWx1ZSkKICAgICAgICAgICAgcmV0dXJuIGJpbmFyeXNlYXJjaCh2YWx1ZSwgdmFsdWVzLCBuLCBsbywgbWlkKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiBiaW5hcnlzZWFyY2godmFsdWUsIHZhbHVlcywgbiwgbWlkICsgMSwgaGkpOzsKICAgIH0KICAgIGVsc2UgcmV0dXJuIDA7Cn0KLyogUmV0dXJucyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBbMCwgbikuCiAqCiAqIFVzZXMgcmFuZCgpLCBhbmQgc28gaXMgYWZmZWN0ZWQtYnkvYWZmZWN0cyB0aGUgc2FtZSBzZWVkLgogKi8KaW50IHJhbmRpbnQoaW50IG4pIHsKICAgIGlmICgobiAtIDEpID09IFJBTkRfTUFYKSB7CiAgICAgICAgcmV0dXJuIHJhbmQoKTsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gQ2hvcCBvZmYgYWxsIG9mIHRoZSB2YWx1ZXMgdGhhdCB3b3VsZCBjYXVzZSBza2V3Li4uCiAgICAgICAgbG9uZyBlbmQgPSBSQU5EX01BWCAvIG47IC8vIHRydW5jYXRlIHNrZXcKICAgICAgICBhc3NlcnQgKGVuZCA+IDBMKTsKICAgICAgICBlbmQgKj0gbjsKCiAgICAgICAgLy8gLi4uIGFuZCBpZ25vcmUgcmVzdWx0cyBmcm9tIHJhbmQoKSB0aGF0IGZhbGwgYWJvdmUgdGhhdCBsaW1pdC4KICAgICAgICAvLyAoV29yc3QgY2FzZSB0aGUgbG9vcCBjb25kaXRpb24gc2hvdWxkIHN1Y2NlZWQgNTAlIG9mIHRoZSB0aW1lLAogICAgICAgIC8vIHNvIHdlIGNhbiBleHBlY3QgdG8gYmFpbCBvdXQgb2YgdGhpcyBsb29wIHByZXR0eSBxdWlja2x5LikKICAgICAgICBpbnQgcjsKICAgICAgICB3aGlsZSAoKHIgPSByYW5kKCkpID49IGVuZCk7CgogICAgICAgIHJldHVybiByICUgbjsKICAgIH0KfQptYWluKCkgewogICAgaW50IGksIG4sIHZhbHVlOwogICAgaW50IHZhbHVlc1tdID0gezEsIDIsIDMsIDQsIDUsIDZ9OwoKICAgIGludCBoaSA9IHZhbHVlc1tuIC0gMV07CiAgICBpbnQgbG8gPSB2YWx1ZXNbMF07CiAgICBzcmFuZCh0aW1lKE5VTEwpKTsKICAgIGludCByYW5kb20gPSByYW5kKCkgJSAxNDsKICAgIGlmICghYmluYXJ5c2VhcmNoKHJhbmRvbSwgdmFsdWVzLCBuLCAwLCA1KSkKICAgICAgICBwcmludGYoIk51bWJlciAlZCBub3QgcHJlc2VudCBpbiBhcnJheVxuIiwgcmFuZG9tKTsKfQ==