アルゴリズム

1/3ページ
C#

[C#] 連結リストを自前で実装する方法

連結リストを自前で実装する 連結リストとは 連結リスト – Wikipedia 連結リスト (Linked List) とは基本的なデータ構造の1つです。配列のようなインデックスで順序が決まるのではなく、各オブジェクトが持つポインタによって順序を決めるデータ構造です。 連結リストにはいくつかの種類があります。一方向と双方向、循環と非循環などです。今回実装していくのは 双方向連結リスト […]

C#

[C#] キューとスタックを自前で実装する方法

Stack, Queue を自前で実装する C# の場合、データ構造の Stack と Queue は標準ライブラリで提供されますが、自前で実装して理解を深めようと思います。 順番に見ていきます。 Stack (スタック) スタック – Wikipedia Stack は先入れ後出し(FILO)を実現するためのデータ構造です。 Stack は、データを入れる Push と積まれたデータ […]

C#

[C#][VB] 挿入ソートを実装する

挿入ソート 挿入ソートを C#, VB.NET で実装してみます。 挿入ソートは、時間計算量 O(n^2) でバブルソートや選択ソートと同じく高速なソートアルゴリズムとは言えません。ただし、挿入ソートについて言えばある面で有用なソートアルゴリズムです。 挿入ソートは要素数の少ないデータに対して、効率よくソートするアルゴリズムです。 クイックソートなど高速なソートアルゴリズムについては、処理のオーバ […]

Rust ソートアルゴリズム実装(バブルソート、選択ソート、挿入ソート)

Rust を使ってソートアルゴリズムを実装してみる Rust を使ってソートアルゴリズムを実装してみます。バブルソート、洗濯ソート、挿入ソートをそれぞれ実装します。 Rust はクセが強いので、結構苦労しましたが以下を学びました。 配列要素の交換は swap() を使う Clone を実装する型は clone() を使える Copy を実装すると型は配列の要素をそのまま交換できる 10..1 みた […]

C#

[C#] [VB] ブロックソートを実装する方法

ブロックソートとは ブロックソート – Wikipedia ブロックソートとはデータの可逆変換アルゴリズムの一種です。ソートとついていますが、データのソートを効率よくするため ソートアルゴリズムではありません 。また、データの圧縮アルゴリズムでもありません。Wikipediaには次のようにあります。 ブロックソート、ブロックソーティング、Burrows-Wheeler変換 (Burro […]

C#

[C#] Base64のアルゴリズムをを実装する

Base64 のエンコード・デコード Base64 というエンコード方式をC#で実装します。Base64は、64種類の印字可能な英数字のみを用いてエンコードします。 Quoted-printable と同じくメール送信時のエンコードとして用いられるほか、Basic認証や画像ファイルの埋め込みなどにも用いられています。 ここでは、Base64のエンコード・デコード処理を独自に実装していきます。 なお […]

C#

[C#] QuotedPrintable エンコード・デコードの実装方法

Quoted-Printableとは Quoted-Printable とは、Ascii文字しか扱えない電子メールの送信などでよく使われる符号化方式の一種です。Ascii文字以外を印字可能な文字に変換(エンコード)します。 同じように電子メールのエンコードに用いられるBase64と比べ、Ascii文字はそのままなのである程度読める形でデータがエンコードされます。一方で、バイナリ形式やAscii文字 […]

[Python] クイックソートの実装方法とアルゴリズム

Pythonとクイックソート Pythonでクイックソートを実装してみます。Python3.6を使います。 クイックソートは数あるソートアルゴリズムの中でも、実用上最速とされる誉れ高いアルゴリズムです。ただし条件次第で低速になってしまうので注意が必要です。 クイックソートは分割統治法と呼ばれる考え方を使ってソートを行います。まずソート対象のデータ(リスト)について、ピボット(基準値)を選び、その基 […]

[Python] ヒープソートの実装方法とアルゴリズム

ヒープソートの実装方法とアルゴリズム Pythonでヒープソートを実装してみます。Python3.6を使います。 常に最大値(最小値)を取り出すことができるデータ構造があれば、それを使ってソートアルゴリズムが実装できるという考えのもと、考案されたのがヒープソートです。ソートは2分ヒープと呼ばれる木構造を使います。 2分ヒープは2分木で、子ノードが常に親ノードより小さいことが保障される木構造です。し […]

[Python] バブルソート/選択ソート/挿入ソートの速度比較

バブルソート/選択ソート/挿入ソートの速度比較 Pythonで作成した上記ソートアルゴリズムの実装を、処理速度の面から比較してみます。使用するコードは以下のページのものです。 [Python] バブルソートの実装方法とアルゴリズム [Python] 選択ソートの実装方法とアルゴリズム [Python] 挿入ソートの実装方法とアルゴリズム ソートアルゴリズムにはデータによって最良の時間計算量が期待で […]

1 3