二分検索
そのまま書き下してみましたけど、ランダムでサンプルを発生させたらヒットしないものですね。(苦笑)
#! /usr/bin/gawk -f # bin_search.awk - binary search # input: min, max # output: result of binary search BEGIN { srand(); for (i = 1; i <= 1000; i++) { array[i] = int(rand() * 100); } print binary_search(array, 50, 1, 100); } function binary_search(array, value, head, tail) { if (head > tail) { return -1; } where = int((head + tail) / 2); if (value == array[where]) { return where; } if (value < array[where]) { tail = where - 1; } else { head = where + 1; } return binary_search(array, value, head, tail); }