開発者が絶対に知っておくべきアルゴリズムとデータ構造はどれですか?[閉まっている]


24

成功するエンタープライズJava開発者になりたい。どのアルゴリズムとデータ構造をよく理解する必要がありますか?どの本を勧めますか?

Java開発者として成功するには、CLRS提供されているような高度なアルゴリズムをすべて知っている必要がありますか?

優先度の高い順に学習する必要があるトピックのリストを提案できますか?

私が知っている必要があります:

  • 検索中?
  • 仕分け?
  • グラフ/ツリー?

等?


1
@jonsca:アフィリエイトマーケティングああ?;)
Chankey Pathak

いや、まあ、SEはリンクをそのように変更しますが、私はちょうど誰もがそれらのイニシャルを知っているわけではないと考えました:)
jonsca

回答:


17

Cormen's Introduction to Algorithmsは、いくつかの基本的な理論的基礎のための良い本です。

とはいえ、ほとんどのアルゴリズムとデータ構造は、他の人によって既にコード化、テスト、および最適化されており、それらをもう一度実装する理由はありません。Java開発者として成功するには、コレクションフレームワークを徹底的に理解する必要があります。


3
ただし、アルゴリズムに含まれるコストを知る必要があります。たとえば、幅優先検索では、潜在的に多くのスペースを使用しながら最短経路を見つけます。
フランクシェラー

同意しましたが、大きなO記法の精神を身に付けることは大いに役立ちます。
ジョナスプラッカ

8

プログラマーになるには、基本的なデータ構造(スタック、キュー、配列、リンクリスト、ハッシュテーブル、ツリーなど)をすべて詳細に理解する必要があります。少なくとも、あなたのためにコレクションフレームワークのない世界で自分自身を見つけたなら、それらのいずれかを自分で実装できれば十分です。

アルゴリズムに関しては、データ構造は基本的な構成要素であるのに対し、アルゴリズムはジョブ用のツールであるように思えます。遭遇する可能性のあるすべてのアルゴリズムを実装する方法の詳細を知ることは、それほど重要ではないと思います。できるようにするために必要なことは、アルゴリズムが特定の目的に対してどれだけうまく機能するかを評価することです。深さ優先検索と幅優先検索の違い、またはデータに対して実行する並べ替えの種類によって、コードのパフォーマンスや一般的な成功に大きな違いが生じる場合があるため、それを判断する方法を知ることが非常に重要です。


0

他の答えに加えて、アルゴリズムの研究はよく知られた手法(まだ重要)を知るためだけでなく、考案に至る思考プロセスについても理解できるようにすることを付け加えたいと思います。実生活で遭遇する問題の解決策であり、必ずしもよく知られているわけではありません。


0

私は今、Javaを数日学習しています。

私は成功したエンタープライズ開発者になりたいです。次に、どのアルゴリズムとデータ構造に精通する必要がありますか?どの本を勧めますか?

Java開発者として成功するには、CLRSで提供されているような高度なアルゴリズムをすべて知る必要がありますか?

優先度の高い順に学習する必要のあるトピックのリストを教えてください。

知っておくべきトピックの名前を教えてください。検索、ソート、グラフ、ツリーなどが好きですか?

プログラミングスキルの拡張と向上を切望しているのは良いことです。ただし、アルゴリズムを記憶するもののカタログとして扱わないことが重要です。優れた開発者になるために(Javaなどに関して)知る必要があるのは、アルゴリズム分析を理解することです。

これを選択するには、選択したいくつかのデータ構造とアルゴリズム学習し、それらのパフォーマンスを時間と空間(メモリ)の観点から分析すること学習します。検索、ソート、グラフ、ツリー、ヒープ、スタック、その他すべての優れた機能。これは、計算と離散数学の理論の基礎にも従うべきです(Javaの分野では、これら2つのトピックを実際に直接使用することはできませんが、その利点は間接的です)。

プログラミング言語(Javaの場合)の学習を、アルゴリズム分析(アルゴリズムおよびデータ構造の「記憶」とは異なります)の学習と分離します。

George T. Heineman、Gary Pollice、Stanley Selkowの「Algorithms in a Nutshell」は良いスタートです。Sanjoy Dasgupta、Christos Papadimitriou、およびUmesh Vaziraniによる「Algorithms」も、別の優れた学部の教科書です。

最高の考えは、アルゴリズムの学部、3000レベルのコースを取る前に、プログラミングの9-12単位のコースを取ることです。それを除けば、私が言及した2冊の本を使った自習は良い選択肢かもしれません(ただし、自習はすべての人に適しているわけではありません。)

がんばろう!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.