Angenommen, wir haben ein Array „arr“, das n sortierte Ganzzahlwerte enthält. Wir erhalten außerdem ein Array „query“ der Größe q und müssen feststellen, ob der Wert in „query“ im angegebenen Array „arr“ vorhanden ist. Wenn der Wert in der Abfrage in arr vorhanden ist, geben Sie „exists“ und den Speicherort des Werts aus. Andernfalls geben wir „existiert nicht“ aus und geben die Position in arr aus, an der sich der Mindestwert befindet, der größer als der Wert in der Abfrage ist. Wir müssen bedenken, dass Arrays 1-indiziert sind.
Wenn die Eingabe also etwa n = 8, arr = {1, 2, 3, 4, 7, 9, 12, 15}, q = 3, query = {1, 5, 8} ist, ist die Ausgabe
Present 1 Not present 5 Not present 6
Der erste abgefragte Wert erscheint an Position 1 von arr.
Der zweite Wert der Abfrage erscheint in arr. Die Position des kleinsten Werts, der größer als der abgefragte Wert ist, ist 5.
Ebenso gibt es in arr keinen dritten Abfragewert. Größere Werte befinden sich an Position 6 von arr.
Um dieses Problem zu lösen, führen wir die folgenden Schritte aus –
Zum besseren Verständnis beziehen wir uns auf die folgende Implementierung:
#include <vector> #include <iostream> using namespace std; void solve(int n, int arr[], int q, int query[]) { vector<int> values; for(int i = 0; i < n; i++){ values.push_back(arr[i]); } for(int i = 0; i < q; i++) { int idx = lower_bound (values.begin(), values.end(), query[i]) - values.begin(); if (values[idx] == query[i]) cout << "Present "; else cout << "Not present "; cout << idx + 1 << endl; } } int main() { int input_arr[] = {1, 2, 3, 4, 7, 9, 12, 15}; int query_arr[] = {1, 5, 8}; solve(8, input_arr, 3, query_arr); return 0; }
int input_arr[] = {1, 2, 3, 4, 7, 9, 12, 15}; int query_arr[] = {1, 5, 8}; solve(8, input_arr, 3, query_arr);
Present 1 Not present 5 Not present 6
Das obige ist der detaillierte Inhalt vonC++-Programm zum Suchen nach einem bestimmten Wert im Array. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!