web-dev-qa-db-ja.com

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

私は成功する企業になりたいJava開発者です。どのアルゴリズムとデータ構造を熟知している必要がありますか?どの本を勧めますか?

Java開発者になるには、 [〜#〜] clrs [〜#〜] で指定されているような高度なアルゴリズムをすべて知っている必要がありますか?

私が学ぶべきトピックのリストを優先度の高い順に提案できますか?

知っておくべきこと:

  • 検索していますか?
  • 並べ替え?
  • グラフ/ツリー?

等?

24
Chankey Pathak

Cormenのアルゴリズム入門 は、いくつかの基本的な理論的基礎に適した本です。

とは言っても、ほとんどのアルゴリズムとデータ構造はすでに他の人によってコード化、テスト、最適化されており、それらをもう一度再実装する理由はありません。 Java開発者として成功するには、 The Collections Framework を完全に理解する必要があります。

17
Joonas Pulakka

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

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

8
glenatron

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

0
MAK

私は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" は、もう1つの優れた学部生の教科書です。

最善の考えは、アルゴリズムの学士、3000レベルのコースを受講する前に、プログラミングで9〜12単位のコースを受講することです。それを除けば、私が言及した2冊の本を使った自習は良い代替案になるかもしれません(ただし、自習がすべての人に役立つわけではありません)。

幸運を!

0
luis.espinal