-
JavaScriptのAtomics.isLockFree()関数
JavaScriptのAtomicオブジェクトはオブジェクトであり、静的メソッドとしてadd、sub、and、or、xor、load、storeなどのアトミック操作を提供します。これらのメソッドはSharedArrayBufferオブジェクトで使用されます。 このメソッドは、ロックを使用するか不可分操作を使用するかを決定するために使用されます。 構文 その構文は次のとおりです Atomics.isLockFree(size) 例 <html> <head> <title>JavaScript Example</title&
-
JavaScriptのAtomics.load()関数
JavaScriptのAtomicオブジェクトはオブジェクトであり、静的メソッドとしてadd、sub、and、or、xor、load、storeなどのアトミック操作を提供します。これらのメソッドはSharedArrayBufferオブジェクトで使用されます。 load() Atomicの機能 オブジェクトは、配列の指定された位置の値を返します。 構文 その構文は次のとおりです Atomics.load() 例 <html> <head> <title>JavaScript Example</title> &l
-
JavaScriptのAtomics.store()関数
JavaScriptのAtomicオブジェクトはオブジェクトであり、静的メソッドとしてadd、sub、and、or、xor、load、storeなどのアトミック操作を提供します。これらのメソッドはSharedArrayBufferオブジェクトで使用されます。 store() アトミックの機能 オブジェクトは、数値(値)と配列内の位置を受け入れ、指定された値を指定された位置に格納して、同じ値を返します。 構文 その構文は次のとおりです Atomics.store() 例 <html> <head> <title>JavaScr
-
JavaScriptのAtomics.sub()関数
JavaScriptのAtomicオブジェクトはオブジェクトであり、静的メソッドとしてadd、sub、and、or、xor、load、storeなどのアトミック操作を提供します。これらのメソッドはSharedArrayBufferオブジェクトで使用されます。 sub() アトミックの機能 オブジェクトは数値と位置を受け入れ、指定された位置の数値から指定された数値を減算し、古い位置の数値の値を返します。 構文 構文は次のとおりです。 Atomics.sub() 例 <html> <head> <title>JavaScript
-
Javascriptの最小スパニングツリー(MST)
最小スパニングツリー(MST)または最小重みスパニングツリーは、接続されたエッジ加重(無)有向グラフのエッジのサブセットであり、すべての頂点を接続します。サイクルと可能な限り最小の総エッジ重みで。つまり、エッジの重みの合計が可能な限り小さいスパニングツリーです。
-
Javascriptでのプリムのアルゴリズム
Primのアルゴリズムは、重み付き無向グラフの最小スパニングツリーを見つける欲張りアルゴリズムです。すべての頂点を含むツリーを形成するエッジのサブセットを検出し、ツリー内のすべてのエッジの合計の重みが最小化されます。 アルゴリズムは、ツリーから別の頂点への可能な限り安価な接続を追加する各ステップで、任意の開始頂点から一度に1つの頂点でこのツリーを構築することによって動作します。 プリムのアルゴリズムはどのように機能しますか? プリムのアルゴリズムがどのように機能するかを示す図を見てみましょう- 1.ルートノードとして任意のノードを選択します。この場合、Primのスパニングツリーのルートノ
-
Javascriptでのクラスカルのアルゴリズム
クラスカルのアルゴリズムは、次のように機能する欲張りアルゴリズムです- 1.グラフ内のすべてのエッジのセットを作成します。 2.上記のセットは空ではなく、すべての頂点がカバーされているわけではありませんが、 このセットから最小ウェイトエッジを削除します このエッジがサイクルを形成しているか、2本の木を接続しているだけかをチェックします。サイクルを形成する場合は、このエッジを破棄します。それ以外の場合は、ツリーに追加します。 3.上記の処理が完了すると、最小スパニングツリーが作成されます。 このアルゴリズムを実装するには、さらに2つのデータ構造が必要です。 まず、エッジを並べ替えら
-
Javascriptの完全グラフクラス
このコードでコメント化されている関数。それらに切り替えることもできます。また、importステートメントまたはrequire呼び出しを使用してインポートできる、さまざまなモジュールのQueue、Stack、およびPriorityQueueクラスを移動しました。これがGraphクラスの完全な実装です- 例 const Queue = require("./Queue"); const Stack = require("./Stack"); const PriorityQueue = require("./PriorityQueue");
-
Javascriptを使用して配列に要素を追加する
配列への要素の追加は、位置ごとに異なる関数を使用して実行できます。 配列の最後に要素を追加する これは、プッシュ方式を使用して実行できます。たとえば、 let veggies = ["Onion", "Raddish"]; veggies.push("Cabbage"); console.log(veggies); これにより、出力が得られます- ["Onion", "Raddish", "Cabbage"] 可変数のをサポートしているため、これを使用して複数のアイテム
-
Javascriptの配列から要素を削除する
配列から要素を削除する際の2つのケースを考えてみましょう。最初に、配列の最後から要素を削除する方法を確認し、次のセクションでは、配列の最初と要素の特定の位置から要素を削除する方法を確認します。 配列の最後から要素を削除する これは、popメソッドを使用して実行できます。たとえば、 let veggies = ["Onion", "Raddish"]; veggies.pop(); console.log(veggies); これにより、出力が得られます- ["Onion"] 配列の先頭から要素を削除する これは、unshiftメ
-
Javascriptの多次元配列
基本的に、配列を配列内に配置する場合は、多次元配列が使用されます。例を見てみましょう。平日の6時間ごとの温度を保存したいとします。次のようなことができます: let monday = [35, 28, 29, 31]; let tuesday = [33, 24, 25, 29]; //... これは、代わりに多次元配列を使用するのに適した場所です。多次元配列は、配列の配列に他なりません。この例を進めると、各行は1日を表し、行の各エントリは一時的なエントリを表します。たとえば、 let temps = [ [35, 28, 29, 31],  
-
Javascriptで配列をループする
Javascriptで配列をループする方法はたくさんあります。 JavascriptのForループ ループのためにそれらから始めましょう。 jsのforループには2つのバリエーションがあります。最初の形式は、init、condition、exprループです。これにより、最初のステートメントが初期化され、各反復でexprが実行され、条件がチェックされます。 たとえば、 var step; for (step = 0; step < 5; step++) { console.log('Taking step ' + step); } これに
-
JavaScriptでの動的計画法
動的計画法は、問題をより小さく、さらにはより小さな可能なサブ問題に分解します。これらのサブ問題は、独立して解決されるわけではありません。むしろ、これらの小さなサブ問題の結果は記憶され、類似または重複するサブ問題に使用されます。 動的計画法は、問題がある場合に使用されます。問題は、同様のサブ問題に分割して、結果を再利用できるようにすることができます。ほとんどの場合、これらのアルゴリズムは最適化に使用されます。手元のサブ問題を解決する前に、動的アルゴリズムは以前に解決されたサブ問題の結果を調べようとします。最良の解決策を達成するために、サブ問題の解決策が組み合わされます。 動的計画法を使用する
-
Javascriptのフィボナッチ数列
フィボナッチ数は、最初の2つ以降のシリーズのすべての数が、前の2つの数の合計になるような数です。シリーズは1、1で始まります。例- 1, 1, 2, 3, 5, 8, 13, 21, 34, …. 次のようにn番目を生成するプログラムを書くことができます- functionfibNaive(n) { if (n<= 1) return n; returnfibNaive(n - 1) + fibNaive(n - 2); } -を使用してこれをテストできます console.log(fibNaive(7)); cons
-
JavascriptのAVLツリークラス
これがAVLツリークラスの完全な実装です- 例 class AVLTree { constructor() { // Initialize a root element to null. this.root = null; } getBalanceFactor(root) { return this.getHeight(root.left) - this.getHeight(root.rig
-
Javascriptのグラフデータ構造
グラフは、オブジェクトのペアがリンクで接続されているオブジェクトのセットを図で表したものです。相互接続されたオブジェクトは、頂点と呼ばれるポイントで表されます。 、および頂点を接続するリンクはエッジと呼ばれます 。 正式には、グラフはセットのペアです(V、E) 、ここで V は頂点とEのセットです は、頂点のペアを接続するエッジのセットです。次のグラフを見てください- 上のグラフでは、 V = {a, b, c, d, e} E = {ab, ac, bd, cd, de} 用語 数学的グラフは、データ構造で表すことができます。頂点の配列とエッジの2次元配列を使用してグラフを表す
-
Javascriptでグラフを作成する
重みと有向型と無向型の両方をサポートするグラフクラスを作成します。これは、隣接リストを使用して実装されます。より高度な概念に移行すると、グラフの重みと方向性の両方が役立ちます。 隣接リストは、個別のリストの配列Aです。配列Aiの各要素はリストであり、頂点iに隣接するすべての頂点が含まれています。ノードとエッジの2つのメンバーを使用して定義しています。 クラスと、グラフにノードとエッジを追加するために使用するいくつかのメソッドを定義して、グラフクラスを設定しましょう。 最初に次のメソッドを定義します- addNode:グラフにノードを追加します addEdge:無向エッジをグラフに追
-
Javascriptでのグラフ走査
グラフトラバーサル(グラフ検索とも呼ばれます)は、グラフ内の各頂点にアクセス(チェックおよび/または更新)するプロセスを指します。このような走査は、頂点が訪問される順序によって分類されます。
-
Javascriptでの幅優先探索トラバーサル
BFSは、子頂点にアクセスする前に隣接頂点にアクセスし、検索プロセスでキューが使用されます。 BFSの仕組みは次のとおりです- 隣接する未訪問の頂点にアクセスします。訪問済みとしてマークします。表示します。キューに挿入します。 隣接する頂点が見つからない場合は、最初の頂点をキューから削除します。 キューが空になるまでルール1とルール2を繰り返します。 BFSトラバーサルがどのように機能するかの図を見てみましょう: ステップ トラバーサル 説明 1 キューを初期化します。 2 まずSにアクセスします (開始ノード)そしてそれを訪問済みとしてマークします
-
Javascriptでの深さ優先探索トラバーサル
DFSは、兄弟の頂点にアクセスする前に、子の頂点にアクセスします。つまり、その幅を調べる前に、特定のパスの深さを横断します。スタック(多くの場合、再帰によるプログラムの呼び出しスタック)は、アルゴリズムを実装するときに一般的に使用されます。 以下はDFSの仕組みです- 隣接する未訪問の頂点にアクセスします。訪問済みとしてマークします。表示します。スタックにプッシュします。 隣接する頂点が見つからない場合は、スタックから頂点をポップアップします。 (隣接する頂点がないスタックからすべての頂点がポップアップ表示されます。) スタックが空になるまで、ルール1とルール2を繰り返します。 DFS