Ich löste die binäre Suche Tutorial auf Hackerearth, aber anscheinend stimmt etwas nicht ... Das Eingabeformat ist wie folgt N = keine Elemente in Array Elemente in aufsteigend Q = Anzahl der Testfälle Elemente in den q TestfälleBinäre Suche C++ (was ist der Fehler in diesem Code)
#include <iostream>
using namespace std;
int main()
{
int n;cin>>n;
int ar[n];for(int y=0;y<n;y++) cin>>ar[y];
int q;cin>>q;
for(int u=0;u<q;u++)
{
int j;cin>>j;
int low=0,high=n-1,mid=(low+high)/2;
while(low<high)
{
mid=(low+high)/2;
if(ar[mid]<j) low=mid+1;
if(ar[mid]>j) high=mid-1;
}
cout<<mid-1<<endl;
}
return 0;
}
Bearbeiten gefunden werden:
Warum gibt es so viel Hass für die Erklärung variabler Größe Array .. Es ist so viel effektiver zu schreiben als Vektor ... Und es ist völlig legal nach C++ 99 Standard .. Ich benutze dies in C++ 11 Standard und Alle meine Programme arbeiten mit Arrays variabler Größe.
Vielen Dank für den Hinweis auf den Fehler. Der Fall für j == ar [mid] ist nicht behandelt. Der Code sollte danach funktionieren.
Vergessen Sie die Darstellung der Antwort und Eingänge bekommen .. völlig unnötig, wie ich bereits erwähnt dies ein Problem auf hackerearth ist .. es auto ist geprüft .. Die Antwort verdirbt das Ausgabeformat präsentiert
Dies war Meine erste Frage hier, die Community war sehr hilfreich. :). Auch deshalb ist es so schwierig Code einzufügen .. Ich Insert Code versucht, kopieren und einfügen in ihm .. aber es hat nicht funktioniert .. Ich musste manuell Einzug alles zu 4 Leerzeichen :(
Das richtige Werkzeug, solche Probleme ist Ihr Debugger zu lösen. Sie sollten Schritt für Schritt durch Ihren Code * gehen, bevor Sie auf Stack Overflow nachfragen. Für weitere Hilfe lesen Sie bitte [Wie kleine Programme zu debuggen (von Eric Lippert)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Zumindest sollten Sie Ihre Frage bearbeiten, um ein [minimales, vollständiges und verifizierbares] (http://stackoverflow.com/help/mcve) Beispiel einzufügen, das Ihr Problem zusammen mit den Beobachtungen, die Sie in der Debugger. –
Denken Sie daran, dass die binäre Suche erfordert, dass die Sammlung, nach der Sie suchen, sortiert ist. Wenn es nicht ist, wird die Suche nicht funktionieren. –
Außerdem hat C++ keine [Arrays mit variabler Länge] (https://en.wikipedia.org/wiki/Variable-length_array), sondern stattdessen 'std :: vector'. –