ハン・シュンピン_アルゴリズムで遊ぶPHPプログラマ公開講座(シーズン1) 01_アルゴリズムの重要性_ゴバンアルゴリズム_ハノイの塔_バックトラッキングアルゴリズム_学習ノート_ソースコードイラスト_PPT文書整理
文喜馬龍: http://blog.csdn.net/ウェンシマロン/
コースの説明: アルゴリズムはプログラムの魂です。高い同時実行性と大規模なスループットにもかかわらず、一部の Web サイトが安定した状態を保っているのはなぜですか。Web サイトでは、サーバー クラスター テクノロジ、データベースの読み取り、書き込み分離、およびキャッシュが使用されていると言えるでしょう。テクノロジ (memcahced、redis など) についてさらに詳しく尋ねると、これらの最適化テクノロジは、大学時代に考えていた、さまざまな人々によってどのように設計されているのでしょうか?機能的には同じに見えますが、運用効率の点では大きく異なりますか? ソフトウェア会社で働いている私の実際の経験を例に挙げてみましょう。UNIX システムの機能は次のとおりです。オンラインで数千万人を同時にサポートし、データ伝送の安定性を確保します。
サーバーがオンラインになる前に内部テストを行ったところ、すべて問題ありませんでしたが、サーバーが実際にオンラインになった後、会社の CTO (初代 Sina テクニカル ディレクター) が 3 日間かけてコードを最適化することができませんでした。石のようにしっかりとオンラインに戻します。その瞬間、プログラムにはアルゴリズムという魂があることに気づきました。永遠にコードワーカーでいるのが嫌で、卑怯者のプログラマーになりたくないのであれば、時間をかけてアルゴリズムを勉強してください。
この公開クラスは 6 日間続き、アルゴリズムの基礎であるデータ構造の説明に焦点を当てます。
より多くの友達を大切にするために、このオープンクラスは 2 つのステージに分かれており、各ステージは知識の順序も考慮して比較的独立しています。学習後は、プログラミングにおけるより複雑なニーズや異常なニーズに対処できるため、一般的なアルゴリズムをすばやく習得し、プログラミングのアイデアを確立できます。
アルゴリズムの重要性の例:
ハン先生が職場で遭遇した問題は、複数の人がログインしている場合にどう対処するか、何千万人がログインしている場合、どのような構造で解決する必要があるかということです...
画像は大きいため、新しいウィンドウで画像を開いて全体を表示してください。
覚えておいてください: 良い基礎を築けば、素晴らしいことを達成できるでしょう!
Java、PHP、C# のいずれであっても、IT を学ぶのに高い学歴は必要ありません。
学歴は問題じゃない、能力が問題だ
★アルゴリズムとは?
プログラム = データ構造 + アルゴリズム
言う: 特定のタスクを完了するために、データ構造 (int-> 配列、リンク リスト、キュー、バイナリ ツリー、ハッシュ...) + ロジック (if、forwhile...) を使用します
考察: なぜ一部の Web サイトは 1,000 万を超える訪問をサポートしているのでしょうか? 「テクノロジーと新浪の仕事」をクリックします。 (製品は実際に共同作業ソフトウェアを開きます | Sina Mail) ->問題がありますか?社内ですべてテストしましたが、すべて問題ありませんでした。ログイン時の解決策: 最初の sinaCTO -> 3 日間の最適化。結論: プログラムには魂があり、それはアルゴリズムです
Baidu/google/Tencent/Taabao=>プログラマーになりたくない場合は、アルゴリズムを読まなければなりません。 【デザインパターン】
★アルゴリズムの用途と使用場所は何ですか?
いくつか実用的な質問をしてみませんか?
$str="abc,ytkhello,abc,北京";
//echo str_replace('abc','ハン・シュンピン',$str);
?>
文字列のようなデータ構造を作ることはできますか?
のようにすることができます。
単一リンクリストで表される文字列と文字列ノードクラスの定義を書き出して、それらのコンストラクターを順番に実装してみます。また、文字列の長さの計算、文字列の割り当て、2 つの文字列が等しいかどうかの判断、文字列の検索、2 つの文字列の接続を試してみます。文字列を検索し、単語を検索します。文字列内の文字列の位置など、7 つのメンバー関数があります。
各文字列ノードには 1 文字だけを格納する必要があります。
データ構造の重要性を説明するために別の例を示します
五目並べにはアルゴリズムに関することがたくさんあります
1. 次のアルゴリズム
2.勝敗を決定するアルゴリズム
3. リグレットチェスのアルゴリズム
4. 保存と読み取りのアルゴリズム
5. その他のアルゴリズム
実際のプログラミングで遭遇するいくつかの問題を見てみましょう
ジョセフ問題(ハンカチ投げ問題)【最も一般的な筆記試験問題】
1.ジョセフの質問
ジョセフの問題は次のとおりです。 1、2、...n の番号が付けられた n 人が輪になって座り、k の番号が付けられた人 (1
ヒント: Josephu 問題を処理するには、ヘッド ノードのない循環リンク リストを使用します。最初に n 個のノードを持つ単一の循環リンク リストを形成し、次にノード k から 1 から数え始めます。m がカウントされると、対応するノードがリストから削除されます。リンク リストからそれを削除し、次のノードから削除されたノードまで 1 から数え始め、最後のノードがリンク リストから削除され、アルゴリズムが終了します。
上記の問題を解決するには循環リンク リストを使用します
その他のアルゴリズムの問題:
郵便配達員の問題
最短経路問題
ハノイの塔
8 人の女王の問題
ハノイの塔は古典的なテスト問題 (再帰問題)
全体として、アルゴリズムは非常に重要であり、プログラムの魂です。
ハン・シュンピン_PHPプログラマーがアルゴリズムで遊ぶ オープンクラス_学習ノート_ソースコードイラスト_PPT文書構成_目次