多くの値の配列があるとしましょう (C++ 構文、申し訳ありません)。
vector<double> x(100000);
この配列は次のようにソートされx[n] > x[n-1]ます。
[a, b] の範囲内のすべての値の配列を取得する関数が必要です (これは包括的です)。次のようないくつかのインターフェース:
void subarray(const double a, const double b, vector<double> &sub) {
...
}
この関数が完了すると、範囲 [a, b] に収まる値subが含まれます。n
もちろん、線形検索は簡単です。
void subarray(const double a, const double b, vector<double> &sub) {
for (size_t i = 0; i < data.size(); i++) {
if (a <= data[i] && data[i] <= b) {
sub.push_back(data[i]);
}
}
}
ただし、dataソートされているため、バイナリ検索を使用してこれをはるかに高速に実行できるはずです。誰がそれを刺したいですか?どの言語も許可されています。