Einfügen einer Zufallszahl in einem array mit sortierten Reihenfolge C++
Hallo, ich versuche ein array, das fügt eine zufällige Zahl, aber wenn Sie es tut, das array bleibt in einer Reihenfolge beibehalten. Zum Beispiel, wenn das array enthalten 10 20 30 und die Zufallszahl 11 war, die Funktion würde es nach 10 und 20 und 30 unten in der Liste. Hier sind die Anforderungen für die Funktion.
- insertNumber fügt eine gegebene Zufallszahl in das array und die Ordnung wahrt.
- Das Daten-array enthält ganze zahlen in sortierter Reihenfolge index von 0 bis size - 2.
- randomNum ist die ganze Zahl eingefügt werden
- Daten wird das array mit Ganzzahlen sortiert
- Größe ist die Gesamtzahl der Elemente, die das array halten kann
Hier ist mein code bisher. Ich bekomme nichts in meiner Ausgabe.
#include"utils.h"
void insertNumber(int randomNum, int data[], int size)
{
for(int i = 0; i < 10; i++)
{
randomNum = data[i];
if (randomNum > data[i] && i < size - 2)
{
for ( int j = 0; j < 10; j--)
{
data[i+1] = data [i];
i--;
}
}
data[i] = randomNum;
}
}
void display(int data[], int size)
{
for (int i = 0; size < 10; i++)
{
cout << " " << data[i];
}
}
- Brauchen Sie ein array, oder könnten Sie auch einen bestellten container?
- die 5. Zeile ist komplett falsch. Die if-Bedingung ist nie erfüllt und deshalb Arrays wird immer die gleichen bleiben.
- Vielleicht ein Tippfehler aber "Größe < 10"? Ich denke, es sollte i < Größe
- Ich habe um ein array zu verwenden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
std::lower_bound
Algorithmus, um eine insertion position, und einstd::vector
container verschieben, verschieben Sie die Elemente mit derinsert
MethodeKönnten Sie binarysearch-Methode durchsucht das array und sehen Sie, wenn die Zufallszahl besteht. Wenn es vorhanden ist, als man einfügen kann, in der Nähe des bestehenden.
Wäre dies nicht der bessere Weg, es umzusetzen?
Ausgabe:
3 6 9 13 14 16 19 20 25 30
Legen Sie Ihre zufällige Nummer, nach der Sie finden das element größer als Sie, in Ihrer Funktion