アルゴリズムを学ぶには、これらのプログラミングの基本(JAVAおよびC ++を含む)を習得する必要があります。

序文

良い友達!素敵なエディターが再び登場しました。冬休みがやってきましたが、冬休み中に友達全員が曲線を追い抜く計画を立てていると思います。

とても美しい長期休暇、暴力的すぎて学習に使用できません。

さらに、編集者に尋ねる小さな友達がよくいますが、学習アルゴリズムを習得するにはどのプログラミング言語が必要ですか?コードを学ぶのはどれくらい難しいですか?PythonまたはMatlabを学ぶ方が良いですか?

実際にこれらの質問に1つずつ答える方法はないので、今日はアルゴリズムを学ぶために必要なプログラミングの知識の種類について話します〜

この記事の目的は、ヒューリスティックアルゴリズムやパブリックアカウントの正確なアルゴリズムを含むアルゴリズムの学習グループであることは注目に値します。したがって、プログラミングの知識は「十分」を強調するだけので、アルゴリズムの設計と最適化により重点を置くことができます

Javaの基本

基本的な知識の核となる原則は「有用」です。基本を学んだは、簡単なアルゴリズムをすばやく作成できるはずです知識を学ぶには、@沈世钧が提供するロードマップを参照してください。

もちろん、学習能力に応じて学習時間を調整することもできますが、通常、この部分は6週間以内に完了しても問題ありません。1 か月の強力な能力は、この基本的な知識をすばやく得ることができます。

Javaを学習する過程で、参照できるインターネット上に多くのビデオがあります。確かにたくさんの本がありますが、とても複雑で、ここでは「Java Core Technology Volume I」を推奨していますが、一冊で十分です。

基本を学んだ後、比較的大規模なプログラム開発を把握しながら、小さなプロジェクトを自分で作成してプログラミング能力を統合することができます****あなたは小さなゲームなどを作ることができます、これは私が以前にやった小さなゲームです:

ポータル:共有| Javaによって実装された大きなボールを食べる小さなボールのゲーム

ただし、プログラムのコードフレームワークはそれほど美しくなく、興味のある友人がリファクタリングできる場合があります。

C ++の基本

正直に言うと、C ++は初心者よりもJavaにとって少し難しいので、私はJavaの後ろにC ++を置きました。C ++の内容が多すぎる、多すぎる ...インターネット上でC ++を習得するための21日間のチートが流通しています。

したがって、最初にC ++の基本を学習することをお勧めします。Javaと同様に、基本を学習した後でクエリを実行できます。

1つ目は、Cの基本的な部分です。データ型、変数、メモリレイアウト、ポインターの基礎、文字列、1次元配列、2次元配列、第1レベルポインター、第2レベルポインター、ポインター配列、配列ポインター、構造体、ファイルの使用など。

次に、C ++の部分があります。オブジェクト指向プログラミングのアイデア、クラスのカプセル化、構築と破棄、静的メンバー、オブジェクト管理、クラスの構築(パラメーターコンストラクター、パラメーター構築なし、コピー構築、デフォルトコンストラクター)とデストラクタ、オブジェクト動的管理、フレンド関数、フレンドクラス、演算子のオーバーロード。

クラスオブジェクトの動的管理(新規/削除)、フレンド関数とフレンドクラス、演算子のオーバーロード、クラス継承、多重継承とそのあいまいさ、仮想継承、多態性、仮想関数、純粋仮想関数、抽象クラス( (抽象クラ​​スプログラミングの思考事例を指向)、関数テンプレート、クラステンプレート、テンプレートの継承。

C ++型変換、C ++入出力ストリーム(標準I / OファイルI / O文字ストリームI / O)、 C ++例外処理(例外メカニズム、例外タイプ、例外変数、例外階層、標準例外ライブラリ)。

これらの基本を学んだ後、あなたは不滅なったと思います、ええと、はい!次に、Xiaobianによって書かれたAI貪欲なヘビの小さなゲームなどの小さなゲームを書くことによって、それを強化できます。

ポータル:C ++でAI関数を使って貪欲なヘビを書くことを教える10分(ソースコードの説明とダウンロード付き)

もちろん、プログラムはそれほど完璧ではなく、興味のある友人はそれを再構築することができます。

データ構造

データ構造の重要性は自明であり、これはすべてのプログラミング言語の中で最も重要な部分であり、プログラム構成の基礎の1つはアルゴリズムの不可欠な部分です。

含む:順次ストレージ、チェーンストレージ、循環リンクリスト、二重リンクリスト、スタック(順次およびチェーン)、キュー(順次およびチェーン)、スタックアプリケーション、基本的なツリーの概念およびトラバーサル、バイナリツリー、ソートアルゴリズム、マージアルゴリズム、選択、挿入、高速、ヒルなど

もちろん、私はCheng Jieの「ビッグデータ構造」をお勧めしますが、この本はインターネット上の多くの人々によって誤って伝えられてきました。

しかし、編集者の観点から見ると、この本はまだ初心者の友人にはとても親しみやすく、少なくともまだ学ぶことができます。初心者の学生もおばあちゃんヤンのデータ構造を見ることができますが、これは本当に退屈です。

IDEの使用

IDEとは何ですか?これは、好きなようにコーディングできる統合開発環境であるため、適切な開発環境を構成することが非常に重要です。

Javaの場合、Eclipseが最も有名です。Eclipseの最大の利点は無料です(後でわかりません)。もちろん、IntelliJ IDEAを使用している小規模なパートナーも多数います。これは有料であり、はるかに使いやすくなっていますが、まだ使用していません。みんなの好みを確認してください。

C ++の場合、WindowsプラットフォームのVCシリーズ(Visual Studio2013、Visual Studio2015、Visual Studio2017、Visual Studio2019など)を選択できます。現在、Visual Studioには無料版のコミュニティバージョンがあります。これは、世界で最も強力なIDEであると言っても過言ではありません。デバッグ機能は非常に強力です。バグをデバッグするためのプロジェクトを書いているさまざまな状況を思い出しました。

一部の上級編集者が選ぶことができるもあり、コード対などに、メモ帳++、EditPlusを選択してくださいもちろん、これは標準的なコーダーです。

高度なアルゴリズム

上記のプログラミング基盤により、ほとんどのアルゴリズムシナリオをすでに処理でき、次に、一般的に使用されるアルゴリズムの学習を開始できます。その後、プロジェクトと論文を開始できます。学習コンテンツ参照:

乾燥品|最適化アルゴリズムを学びたいのですが、どこから始めればよいかわかりませんか?

ドライグッズ|オペレーションズリサーチはどこから始まりますか?運用研究アルゴリズムをすぐに開始するにはどうすればよいですか?

乾物|公開番号「データマジシャン」アルゴリズムコードの並べ替え:コードを表示します!

最後にもう一言

Pythonやmatlabの代わりにC ++とjavaを選択した理由については、何度も説明しました。C ++やJavaを学んでも大丈夫ですか?エディターが両手で把握することを推奨する理由は、C ++とJavaには非常に大きな利点があるためです。

C ++の場合、速度は非常に速いため、命を疑うほど高速です。現時点で疑問を抱いている読者もいるかもしれませんが、編集者は人をだまし、ときにはC ++が途方もなく遅いと感じています。これは、IDEのコンパイルモードがデバッグであり、コンパイルが最適化されていないためです。

たとえば、Visual Studioでリリースモードを選択します。

最適化オプションは速度優先を選択します:

もう1つの例は、devC ++で選択することです。

次に、プログラムがN回よりも高速であることがわかります。

Javaの最大の利点は、速度と使いやすさのバランスです。速度は一般的にC ++のオーダーですが、結局のところ、異常なC ++と同等の速度です。

しかし、javaは非常に使い勝手がよく、たとえばcplexを呼び出すには、jarパッケージをインポートし、dllを構成して必要な処理を実行するだけです。C ++は、ヘッダーをインポートしてライブラリを再度リンクする必要があります。これは、次のようなXiaobaiにとって悪夢です。

また、C ++とは異なり、ファイルごとに1つのクラスのjavaとは異なり、1つのクラスには1つのヘッダーファイルと1つのCPPファイルがあります。JavaおよびC ++エディターが10,000行を超えるコードの開発に使用した大規模なアルゴリズムの場合、それらの間の利点と欠点はよく理解されており、決して中途半端ではありません。

最後に、C ++とjavaのメモリ管理メソッドの違いに注意する価値があります。シャローコピーなどの概念はよく知られているはずです。

最後に、私はあなたに新年のすべての成功を祈っています****そして私は編集者に多くの幸運を祈っています、私はすべてが終わったことを願っています、ねえ!

おすすめ

転載: www.cnblogs.com/dengfaheng/p/12672774.html