Sono nuovo al C++. Ho visto questo codice online, dove sta cercando di trovare una stringa all'interno di un vettore. Tuttavia, ho notato a destra verso la fine:per trovare l'elemento centrale in un vettore, perché utilizzare "mid = beg + (end - beg)/2" anziché "mid = (beg + end)/2"
mid = beg + (end - beg)/2;
Perché deve essere scritto in questo modo, perché non può essere scritto come:
mid = (beg + end) /2
È mid = (beg + (end - 1))/2
un'alternativa fattibile?
Sto lottando per capire il motivo dietro di esso.
Per uno, l'altro non verrà compilato. Neanche l'alternativa. Cosa significa aggiungere due iteratori? – chris
sì, ho provato l'alternativa e non sarebbe compilato. Ma sto lottando per capire il motivo alla base. Potresti gentilmente spiegarmelo? Grazie – Thor
La variabile beg è solo all'inizio del vettore la prima volta. Dopodiché, stai spostando l'estremità vicina o l'estremità opposta verso il punto medio precedente in modo da ridurre lo spazio di ricerca. Questo metodo è chiamato ricerca binaria perché riduce lo spazio di ricerca di 1/2 ogni iterazione (è un algoritmo O (logn)) –