2つのアルゴリズムのJavascriptファイルを作成しました。下のコードに示すように、私はfor loop
を使用して両方のアルゴリズムで入力として使用されるランダムな値を生成します。別の関数の出力を表示する方法
現在のところ、binarySearch
とSearchSorted
の出力を表示しています。
私が直面しています問題は、私は同じ配列が意味のある比較のために両方のアルゴリズムにメインプログラムにrandomlyGenerateArray
によって生成値渡す必要があります。しかし、私は出力形式を変更する方法を知らない。
私はそれらを別々のループで追加することを考えましたが、私が上で説明したように、両方のアルゴリズムに同じrandomArray
値を使用する必要があります。以下に示すように
すなわち、以下のコードは出力を生成します - 私は、バイナリ検索ファーストの出力を表示し、[検索ソートの出力を表示するにはどうすればよい
Binary Search Successful 1 Search Sorted Successful 5 Binary Search Successful 3 Search Sorted Successful 10
?それはこのようなものです。どんな助けでも大歓迎です。
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();
はバイナリを分離し、2つのループに検索をソート。また、ちょっと明確にする、あなたは各ステップで新しい配列を生成するはずですか? – Zero
両方のアルゴリズムの入力に同じ 'randomArray'を使用する必要があります。私がそれらを分離すると、もう一方のループに対して 'randomlyGenerateArray'をもう一度呼び出さなければなりません。そして、もう一方のループと同じ配列値を持たないでしょう。 – Dazzler