データ構造とアルゴリズムについて知っておくべき 50 のコード実装

データ構造とアルゴリズムについて知っておくべき 50 のコード実装

今日、私は GitHub で非常に優れたプロジェクトを見つけました。現在、4700 以上のスターが付いています。このプロジェクトは主にデータ構造とアルゴリズムについて語っており、複数の言語で 50 のコード実装があります。

実装言語には、C++、C#、Go、Java、JavaScript、Object-C、Python、Scala、Swift、そして世界で最も人気のある言語であるPHPが含まれます。

住所:

https://github.com/wangzheng0822/algo

内容は以下の通りです。

配列

  • 動的拡張をサポートする配列を実装する
  • 固定サイズの順序付き配列を実装し、動的な追加、削除、変更操作をサポートする
  • 2つのソートされた配列を1つのソートされた配列に結合する

リンクリスト

  • 単一リンクリスト、循環リンクリスト、双方向リンクリストを実装し、追加および削除操作をサポートします。
  • 単一リンクリストの反転の実装
  • 2 つの順序付きリンク リストを 1 つの順序付きリンク リストにマージします。
  • リンクリストの中間ノードを実現する

スタック

  • 配列を使用してシーケンシャルスタックを実装する
  • リンクリストを使用したリンクスタックの実装
  • ブラウザの進む・戻る機能を実現するプログラミングシミュレーション

  • 配列を使用してシーケンシャルキューを実装する
  • リンクリストを使用してリンクキューを実装する
  • 循環キューの実装

再帰

  • フィボナッチ数列の評価を実装するためのプログラミング f(n)=f(n-1)+f(n-2)
  • 階乗 n を求めるプログラミング!
  • データセットの完全な順列を実現するためのプログラミング

ソート

  • マージソート、クイックソート、挿入ソート、バブルソート、選択ソートを実装する
  • O(n) の時間計算量でデータセット内の K 番目に大きい要素を見つけるプログラム

バイナリ検索

  • 順序付けられた配列の二分探索アルゴリズムを実装する
  • ファジーバイナリ検索アルゴリズムを実装する(たとえば、指定された値以上の最初の要素)

ハッシュテーブル

  • 競合問題を解決するためにリンクリスト方式に基づくハッシュテーブルを実装する
  • LRUキャッシュ削除アルゴリズムの実装

  • 英語の a から z までの 26 文字のみを含む文字セットを実装します。
  • 単純な文字列マッチングアルゴリズムを実装する

バイナリツリー

  • バイナリ検索ツリーを実装し、挿入、削除、検索操作をサポートする
  • 二分探索木におけるノードの後続ノードと先行ノードの検索を実現する
  • バイナリツリーのフロント、ミドル、ポストオーダー、レイヤーごとのトラバーサルを実装する

ヒープ

  • 小さなトップヒープ、大きなトップヒープ、および優先キューを実装する
  • ヒープソートの実装
  • 優先キューを使用してK順序配列をマージする
  • 動的データセットの上位Kを見つける

写真

  • 有向グラフ、無向グラフ、重み付きグラフ、重みなしグラフの隣接行列と隣接リストの表現方法を実装する
  • グラフの深さ優先探索と幅優先探索を実装する
  • ダイクストラアルゴリズムとA*アルゴリズムを実装する
  • トポロジカルソートのためのカーンアルゴリズムとDFSアルゴリズムを実装する

バックトラッキング

  • バックトラッキングアルゴリズムを使用して 8 つのクイーン問題を解く
  • バックトラッキングアルゴリズムを使用して 0-1 ナップサック問題を解く

分割して征服する

  • 分割統治アルゴリズムを使用して、データセットの逆ペアの数を見つけます。

動的プログラミング

  • 0-1 ナップサック問題
  • 最小パスと
  • レーベンシュタインの最短編集距離を実装するプログラミング
  • 2つの文字列の最長共通部分列を見つけるプログラミング
  • データシーケンスの最長増加部分列を実現するためのプログラミング

C++ と Java を見てみましたが、非常に優れたコーディング スタイルでよく書かれています。これらから学びましょう。よく言われるように、アルゴリズムを理解していないプログラマーは単なるコード ファーマーです。

<<:  人工知能教育の時代が到来。AIは何ができるのか?

>>:  自動運転自転車が発売されました。これを見た後ではもう運転したくありません!ホットカミング

ブログ    
ブログ    

推薦する

解読: ボストン ダイナミクスがアルゴリズムを使用してアトラス ロボットの感覚世界を構築する方法

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

AlphaFold2 は大きな貢献をしました!清華大学チームがディープラーニングでCOVID-19抗体を強化し、AIの画期的な成果を生み出す

2020年末、DeepMindが開発した第2世代ディープラーニングニューラルネットワークであるAlp...

2019年最新プログラマー収入ランキング:あなたは取り残されていますか?

Indeed Recruitment Network が 2019 年の給与リストを発表したところ...

新たな市場トレンドをリードする百度Apollo Zhituがグローバルインテリジェント運転マップをリリース

自動車の知能化の時代が到来しました。 12月8日、広州で開催された第2回百度アポロエコシステムカンフ...

人工知能と拡張現実はオンラインショッピング行動に影響を与える

[[405357]]画像ソース: https://pixabay.com/images/id-468...

データセンター市場はAIの爆発的な増加に向けて準備を整えている

最近、人工知能分野での成功事例や投資発表が急増し、ビジネス界の注目と関心を集めています。最近の AI...

Visual Mamba が登場: 2.8 倍高速、メモリが 87% 削減

「万能トランスフォーマー」として知られるマンバは、発売から2か月も経たないうちに高性能ビジュアルバー...

サッカーボールとハゲ頭の区別がつかないAIがプレミアリーグのファンにまたもや嫌われる

スポーツにおける AI はどの程度信頼できないのでしょうか?先月、スコットランドサッカー選手権の試合...

集団雷雨!自動化された攻撃により、主要な言語モデルを1分で脱獄できる

大規模な言語モデル アプリケーションが直面する 2 つの主要なセキュリティ上の脅威は、トレーニング ...

仕事の未来に向けたスマートデバイスの準備

パンデミック以前は、スマートデバイスは接続できなかった可能性があります。しかし、従業員が自宅からログ...

...

なぜほとんどの人工知能は「人工的な知的障害」のように見えるのでしょうか?

[[431114]]当時流行した「インターネット+」を覚えている人はいるだろうか...「衣食住交通...

任意のデータセットに基づいて LLM (大規模言語モデル) ロボットを作成する

今日、偶然Embedchainというウェアハウスを見つけ、とても便利だと思ったので、皆さんとシェアし...

...

...