ホームページ ウェブフロントエンド jsチュートリアル Javascriptのデータ構造とアルゴリズム一覧を詳しく解説_JavaScriptスキル

Javascriptのデータ構造とアルゴリズム一覧を詳しく解説_JavaScriptスキル

May 16, 2016 pm 04:10 PM
javascript リスト データ構造 アルゴリズム

まえがき: 日常生活で、人はよくリストを使います。たとえば、買い物に行くときに、すべての物を買うために、行く前に買いたいもののリストを作ることができます。私たちが使っていたリストや、私たちが幼い頃に学校に通っていたとき、学校は試験のたびに、その試験で得点した上位 10 人の生徒の順位と成績表をリストアップしていました。これらはすべてリストの例です。 。私たちはコンピューターでもリストを使用しますが、リストはどこで使用するのに適しているのでしょうか?使用に適さない場所はどこですか?

使用に適しています: リスト内の要素がそれほど多くない場合、リスト内の要素を検索または並べ替える際の効率が非常に高いため、リストを使用できます。 逆に: リスト内の要素が非常に多い場合。リストの場合、リストは適切ではなくなります。

1: リストの抽象データ型定義

リストの抽象データ型を設計するには、リストにどのような属性が必要か、リストに対してどのような操作が実行されるべきかなど、リストの定義を与える必要があります。

リストは順序付けられたデータのセットです。各リスト内のデータ項目は要素と呼ばれます。 JavaScript では、リスト内の要素は任意のデータ型にすることができます。リストに格納できる要素の数については、事前の合意はありません。ただし、要素の数は実際に使用されるプログラム メモリによって制限されます。

ここでリストを設計したいと思います。その後、リストの実装と、リストにどのような属性とメソッドを含めるかについて考えます。もちろん、以下の設計は、『JavaScript データ構造とアルゴリズム』のデモに基づいています。これまでのところ、将来プログラムを作成する際の参考として独自の抽象クラスを設計する方法を学ぶことができます。この本のデモを学ぶ上で最も重要なことは、その設計アイデアとコードの書き方を学ぶことです。これらには次の属性があります。

1. listSize (属性): listSize 変数を使用して、リスト内の要素の数を保存します。
2. pos (属性): リストの現在位置、要素のインデックス。
3. dataStore (属性): 要素数を保存するために空の配列を初期化します。リスト内の特定の要素を取得したい場合は、dataStore[pos];

などの上記の pos 属性を使用できます。

すべての方法は次のリストで説明されており、1 つずつ紹介するわけではありません。

2: リストクラスの実装方法

上で定義したリスト抽象データ型に従って、次のようにコンストラクター プロトタイプ モードを通じて次の List クラスを実装できます。

コードをコピー コードは次のとおりです:

関数 List() {
// リスト内の要素の数
This.listSize = 0;

// リストの現在の位置は何ですか
This.pos = 0;

// リスト要素を保存するために空の配列を初期化します
This.dataStore = [];

}

List.prototype = {

//リストの最後に要素を追加します
追加: 関数(要素) {
var self = this;
self.dataStore[this.listSize] = 要素;
}、

// リストから要素を削除します
削除: function(element) {
var self = this;
var curIndex = self.find(element);
If(curIndex > -1) {
self.dataStore.splice(curIndex,1);
—self.listSize;
true を返します;
}
return false;
}、

// リスト内の要素を検索し、インデックスを返します
検索: function(element) {
var self = this;
for(var i = 0,dataLen = self.dataStore.length; i If(self.dataStore[i] == 要素) {
return i;
}
}
return -1;
}、

// リスト内の要素の数を返します
長さ: function() {
return this.listSize;
}、

// リスト内の要素を表示します
toString: function(){
return this.dataStore;
}、

/*
* 指定した要素
の後に要素を挿入します * @param要素の現在の要素
* @param elementAfter この要素の後に現在の要素を挿入します
*/
挿入: function(element,elementAfter){
var self = this;
var insertPos = self.find(elementAfter);
If(insertPos > -1) {
self.dataStore.splice(insertPos 1,0,element);
self.listSize;
true を返します;
}
return false;
}、

// リスト内のすべての要素をクリアします
クリア: function() {
削除 this.dataStore;
This.dataStore = [];
this.listSize = this.pos = 0;
}、
// 指定された要素がリストにあるかどうかを判断します
含まれるもの: function(element) {
var self = this;
for(var i = 0,ilen = self.dataStore.length; i If(self.dataStore[i] == 要素) {
return true;
}
}
return false;
}、
// リスト内の現在の要素を最初の位置に移動します
フロント: function(){
This.pos = 0;
}、
// リスト内の現在の要素を最後の位置に移動します
終了: function(){
this.pos = this.listSize - 1;
}、
// 現在の位置を 1 つ前に戻します
前: function(){
If(this.pos > 0) {
—this.pos;
}
}、
// 現在位置を 1 つ前に移動します
次: function(){
If(this.pos This.pos;
}
}、
// リストの現在位置を返します
CurPos: function(){
return this.pos;
}、
// 現在位置を指定位置に移動
MoveTo: function(n) {
This.pos = n;
}、
// 現在の位置にある要素を返します
GetElement:function(){
return this.dataStore[this.pos];
}
};

上記と同様: 上記と同じ数のメソッドを含むリスト クラスを実装します。もちろん、他のメソッドを拡張してリスト クラスの実装を強化することもできます。最も重要なことは、上記のコーディング方法を学ぶことです。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C++ での機械学習アルゴリズムの実装: 一般的な課題と解決策 C++ での機械学習アルゴリズムの実装: 一般的な課題と解決策 Jun 03, 2024 pm 01:25 PM

C++ の機械学習アルゴリズムが直面する一般的な課題には、メモリ管理、マルチスレッド、パフォーマンスの最適化、保守性などがあります。解決策には、スマート ポインター、最新のスレッド ライブラリ、SIMD 命令、サードパーティ ライブラリの使用、コーディング スタイル ガイドラインの遵守、自動化ツールの使用が含まれます。実践的な事例では、Eigen ライブラリを使用して線形回帰アルゴリズムを実装し、メモリを効果的に管理し、高性能の行列演算を使用する方法を示します。

C++sort 関数の基礎となる原則とアルゴリズムの選択を調べる C++sort 関数の基礎となる原則とアルゴリズムの選択を調べる Apr 02, 2024 pm 05:36 PM

C++sort 関数の最下層はマージ ソートを使用し、その複雑さは O(nlogn) で、クイック ソート、ヒープ ソート、安定したソートなど、さまざまなソート アルゴリズムの選択肢を提供します。

Java 関数比較を使用して複雑なデータ構造を比較する Java 関数比較を使用して複雑なデータ構造を比較する Apr 19, 2024 pm 10:24 PM

Java で複雑なデータ構造を使用する場合、Comparator を使用して柔軟な比較メカニズムを提供します。具体的な手順には、コンパレータ クラスの定義、比較ロジックを定義するための比較メソッドの書き換えが含まれます。コンパレータインスタンスを作成します。 Collections.sort メソッドを使用して、コレクションとコンパレータのインスタンスを渡します。

改良された検出アルゴリズム: 高解像度の光学式リモートセンシング画像でのターゲット検出用 改良された検出アルゴリズム: 高解像度の光学式リモートセンシング画像でのターゲット検出用 Jun 06, 2024 pm 12:33 PM

01 今後の概要 現時点では、検出効率と検出結果の適切なバランスを実現することが困難です。我々は、光学リモートセンシング画像におけるターゲット検出ネットワークの効果を向上させるために、多層特徴ピラミッド、マルチ検出ヘッド戦略、およびハイブリッドアテンションモジュールを使用して、高解像度光学リモートセンシング画像におけるターゲット検出のための強化されたYOLOv5アルゴリズムを開発しました。 SIMD データセットによると、新しいアルゴリズムの mAP は YOLOv5 より 2.2%、YOLOX より 8.48% 優れており、検出結果と速度のバランスがより優れています。 02 背景と動機 リモート センシング技術の急速な発展に伴い、航空機、自動車、建物など、地表上の多くの物体を記述するために高解像度の光学式リモート センシング画像が使用されています。リモートセンシング画像の判読における物体検出

58 ポートレート プラットフォームの構築におけるアルゴリズムの適用 58 ポートレート プラットフォームの構築におけるアルゴリズムの適用 May 09, 2024 am 09:01 AM

1. 58 Portraits プラットフォーム構築の背景 まず、58 Portraits プラットフォーム構築の背景についてお話ししたいと思います。 1. 従来のプロファイリング プラットフォームの従来の考え方ではもはや十分ではありません。ユーザー プロファイリング プラットフォームを構築するには、複数のビジネス分野からのデータを統合して、ユーザーの行動や関心を理解するためのデータ マイニングも必要です。最後に、ユーザー プロファイル データを効率的に保存、クエリ、共有し、プロファイル サービスを提供するためのデータ プラットフォーム機能も必要です。自社構築のビジネス プロファイリング プラットフォームとミドルオフィス プロファイリング プラットフォームの主な違いは、自社構築のプロファイリング プラットフォームは単一のビジネス ラインにサービスを提供し、オンデマンドでカスタマイズできることです。ミッドオフィス プラットフォームは複数のビジネス ラインにサービスを提供し、複雑な機能を備えていることです。モデリングを提供し、より一般的な機能を提供します。 2.58 中間プラットフォームのポートレート構築の背景のユーザーのポートレート 58

Javaのデータ構造とアルゴリズム: 詳細な説明 Javaのデータ構造とアルゴリズム: 詳細な説明 May 08, 2024 pm 10:12 PM

データ構造とアルゴリズムは Java 開発の基礎です。この記事では、Java の主要なデータ構造 (配列、リンク リスト、ツリーなど) とアルゴリズム (並べ替え、検索、グラフ アルゴリズムなど) について詳しく説明します。これらの構造は、スコアを保存するための配列、買い物リストを管理するためのリンク リスト、再帰を実装するためのスタック、スレッドを同期するためのキュー、高速検索と認証のためのツリーとハッシュ テーブルの使用など、実際の例を通じて説明されています。これらの概念を理解すると、効率的で保守しやすい Java コードを作成できるようになります。

PHP データ構造: AVL ツリーのバランス、効率的で秩序あるデータ構造の維持 PHP データ構造: AVL ツリーのバランス、効率的で秩序あるデータ構造の維持 Jun 03, 2024 am 09:58 AM

AVL ツリーは、高速かつ効率的なデータ操作を保証するバランスのとれた二分探索ツリーです。バランスを達成するために、左回転と右回転の操作を実行し、バランスに反するサブツリーを調整します。 AVL ツリーは高さバランシングを利用して、ツリーの高さがノード数に対して常に小さくなるようにすることで、対数時間計算量 (O(logn)) の検索操作を実現し、大規模なデータ セットでもデータ構造の効率を維持します。

グローバルグラフ強化に基づくニュース推奨アルゴリズム グローバルグラフ強化に基づくニュース推奨アルゴリズム Apr 08, 2024 pm 09:16 PM

著者 | Wang Hao によるレビュー | Chonglou ニュース アプリは、人々が日常生活で情報ソースを入手する重要な方法です。 2010年頃、海外ニュースアプリの人気はZiteやFlipboardなどがあり、国内ニュースアプリの人気は主に4大ポータルでした。 Toutiaoに代表される新時代のニュースレコメンド商品の人気により、ニュースアプリは新時代を迎えました。テクノロジー企業に関しては、どの企業であっても、高度なニュース推奨アルゴリズム技術を習得していれば、基本的に技術レベルでの主導権と発言権を握ることになる。今日は、RecSys2023 Best Long Paper Nomination Award の論文、GoingBeyondLocal:GlobalGraph-EnhancedP を見てみましょう。

See all articles