Ich habe eine Javascript-Datei von zwei Algorithmen geschrieben. Wie im folgenden Code gezeigt, verwende ich eine for loop
, um zufällige Werte zu generieren, die von beiden Algorithmen als Eingabe verwendet werden.Wie man die Ausgabe einer Funktion nach der anderen anzeigt
Zur Zeit zeige ich die Ausgabe der binarySearch
und SearchSorted
alternativ.
Das Problem, das ich bin vor ist, ich habe die gleichen Array Werte, die durch randomlyGenerateArray
im Hauptprogramm sowohl für einen aussagekräftigen Vergleich der Algorithmen erzeugt passieren. Aber ich weiß nicht, wie man das Ausgabeformat ändert.
Ich habe gedacht, sie in verschiedenen Schleifen hinzuzufügen, aber wie ich oben erklärt habe, muss ich die gleichen randomArray
Werte für beide Algorithmen verwenden.
heißt Der Code unten erzeugt eine Ausgabe wie unten gezeigt -
Binary Search Successful 1 Search Sorted Successful 5 Binary Search Successful 3 Search Sorted Successful 10
Wie kann ich die Ausgabe von Binary Search zuerst angezeigt und dann Ausgabe der Suche sortiert angezeigt werden? Es ist so etwas. Jede Hilfe wird sehr geschätzt.
Binary Search Successful 1 Binary Search Successful 3 Search Sorted Successful 5 Search Sorted Successful 10
// Binary Search Algorithm
function binarySearch(A,K)
{
var l = 0; // min
var r = A.length - 1; //max
var n = A.length;
var operations = 0;
while(l <= r)
{
var m = Math.floor((l + r)/2);
operations++;
if(K == A[m])
{
console.log('Binary Search Successful %d',operations);
return m;
}
else if(K < A[m])
{
r = m - 1;
}
else
{
l = m + 1;
}
}
operations++;
console.log('Binary Search Unsuccessful %d',operations);
return -1;
}
// Search Sorted Algorithm
function searchSorted(A, K)
{
var n = A.length;
var i = 0;
var operations = 0;
while (i < n)
{
operations++;
if (K < A[i])
{
return -1;
}
else if (K == A[i])
{
console.log('Search Sorted Successful %d', operations);
return i;
}
else
{
i = i + 1;
}
}
operations++;
console.log('Search Sorted Unsuccessful %d', operations);
return -1;
}
// Random Array generator
var randomlyGenerateArray = function(size)
{
var array = [];
for (var i = 0; i < size; i++)
{
var temp = Math.floor(Math.random() * maxArrayValue);
var final = array.splice(5, 0, 30);
array.push(final);
}
return array;
}
//Sort the Array
var sortNumber = function(a, b)
{
return a - b;
}
// Main Program
var program = function()
{
var incrementSize = largestArray/numberOfArrays;
for (var i = smallestArray; i <= largestArray; i += incrementSize)
{
var randomArray = randomlyGenerateArray(i);
var sort = randomArray.sort(sortNumber);
var randomKey = 30;
binarySearch(sort, randomKey);
searchSorted(sort, randomKey);
}
}
var smallestArray = 10;
var largestArray = 10000;
var numberOfArrays = 1000;
var minArrayValue = 1;
var maxArrayValue = 1000;
program();
Separate die binäre und sortiert Suche in 2 Schlaufen. Außerdem, nur um zu klären, Soll in jedem Schritt ein neues Array generiert werden? – Zero
Ich muss das gleiche 'randomArray' als Eingabe für beide Algorithmen verwenden. Wenn ich sie getrennt habe, muss ich 'randomGenerateArray' erneut für die andere Schleife aufrufen, die dann nicht die gleichen Array-Werte wie die andere hat. – Dazzler