1. 優先キューの紹介通常のキューに要素が挿入されると、データはバックエンドに配置され、前の要素がすべて処理されるまで前のデータは処理されないことがわかっています。ただし、優先キューは要素を挿入するときにデータの優先度を考慮し、それを他のデータの優先度と比較します。比較が完了すると、キュー内のこの要素の正しい位置を取得できます。その他の処理方法は、基本的に基本キューと同じです。 優先キューに関して考慮すべき主な問題は次のとおりです。
病院(救急科)の待合室など日常生活でも優先待ち行列が利用されている例があります。医師はより重篤な症状の患者を優先するだろう。コンピュータでは、優先度キューを使用して、キュー内のタスクの順序を並べ替えることもできます。たとえば、各スレッドで処理されるタスクの重要度は異なり、優先度のサイズを使用して、キュー内でスレッドが処理される順序を決定できます。 2. 優先キューのカプセル化優先キューの動作は基本的にキューと同じですが、挿入操作が異なるため、ここでは優先キューの挿入操作を中心に実装します。 たとえば、特定のデータの優先度に応じて要素を挿入する場合、まず優先度キューをカプセル化するクラスを作成し、その中に要素の優先度とデータを保存するコンストラクターを作成し、次に要素を格納する属性を追加します。 コードは次のとおりです。 関数PtiorityQueue(){ var アイテム = []; //要素とその優先度を保存するための新しいコンストラクタをカプセル化します function queueElement(element,priority){ this.element = 要素; this.priority = 優先度; } } 作成が完了すると、挿入操作が実装されます。
具体的な実装コードは次のとおりです。 関数PtiorityQueue(){ this.items = []; //要素とその優先度を保存するための新しいコンストラクタをカプセル化します function QueueElement(element,priority){ this.element = 要素; this.priority = 優先度; } //1. 挿入メソッドを実装する PtiorityQueue.prototype.enqueue = function(element,priority){ //1. queueElement オブジェクトを作成する var queueElement = new QueueElement(element,priority); //2. キューが空かどうかを判定する if (this.items.length == 0) { this.items.push(キュー要素); }それ以外{ var フラグ = false; for(var i =0;i<this.items.length;i++){ キュー要素の優先度が this.items[i].priority より低い場合 this.items.splice(i,0,queueElement); フラグ = true; 壊す; } } if(!フラグ){ this.items.push(キュー要素) } } } } 入力テストデータは次のとおりです。
印刷結果は次のとおりです。 JavaScript での優先キューの実装に関するこの記事はこれで終わりです。優先キューの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: DockerコンテナでPythonを実行するディープラーニング環境を構築する方法
>>: メタタグのビューポートを使用して画面の CSS を定義する
この記事では、jQueryプラグインを使用したマインスイーパゲームの最初の記事の具体的なコードを参考...
CSS のFlex(彈性布局)すると、Web ページのレイアウトを柔軟に制御できます。Flex Fl...
この文の目的は何ですか?コードをコピーコードは次のとおりです。 <link rel="...
この記事では、Web ページを作成する前に確認すべき、いわゆる仕様をいくつかまとめました。皆様のお役...
前回述べた問題を解決するために、オンラインで検索したところ、非常に優れたビジュアル インターフェース...
序文まず、高性能サーバーの高可用性またはホットスタンバイソリューションである Keepalived ...
目次チュートリアルシリーズ1. MySQL の紹介2. MySQLの開発履歴3. MariaDBの基...
目次1. fill() 構文2. fill() の使用3. まとめ序文:配列の初期化方法についてはよ...
目次ブロックレベル関数オブジェクトのプロトタイプを直接変更すると呼び出された人発信者評価ブロックレベ...
この記事では、参考までにMySQL 5.7.13 winx64のインストールと設定方法のグラフィック...
フローティング要素は、親要素の高さを縮小します。要素を float float:left/right...
序文WeChat ミニプログラムは新しいオープン機能を提供します!ついにミニプログラムにHTMLペー...
[LeetCode] 177. 最も高い給与従業員テーブルからn番目に高い給与を取得する SQL ...
これを応用することで、ウェブサイトの一部の公開領域を独立したページにすることができ、その後、この技術...
目次序文:特定の操作ステップ1: プレハブを準備するステップ2: オブジェクトプールを初期化するステ...