「オブジェクト指向プログラミングとデータ構造、」学習要約の第九週
コンテンツ概要を学びます
- 1.バイナリ検索ツリー(バイナリ検索ツリー):拡張バイナリツリーは、付加的な特性を有するバイナリツリーを定義しました。追加のプロパティは何ですか?ツリー内の各ノードは、その左の子は親よりも小さくなければならない、と親はその右の子に等しい未満または持っています。
2.ヒープソート
- ソート・ヒープ3.内容:
原則は:順序プロパティヒープによると、リストの各要素は、ヒープに追加するには、その後、ルートから一度に1を削除します。
ヒープ初期が一体+交換素子と素子積層体の上端と二つの部分のヒープ再構成することによって主に構成されたヒープソート選択ソート、。完全二分木の性質に応じてO(N)、ヒープを交換し、再構築のプロセス、N-1回交換する必要があり、再構成プロセススタック、前記複雑度を導出することによって、初期スタックを構築である、[IOG2(N-1) 、LOG2(N-2)... 1] 漸減、約nlogn。だから、ヒープソート一般的に時間計算量O(nlogn)と考えられています。
O(nlogn)のヒープソート時間の複雑さ。
ステップ:
ステップA:初期ヒープ構造。(大スタックのトップを使用して、降順、小さな上昇と、パイル上部)ランダムシーケンス構成されるスタックを考えます。
ステップ2:最後の要素の終わりにスタック要素とスイッチング素子の上部が最大化されます。次に、終了時のスタック要素とスイッチング素子の上部その後、スタックを調整する第2大要素を与え続けます。だから、もう一度、再構築し、交換を交換しました。 4. [削除要素(removeElement):
バイナリツリーには、以下の3つの方法で与えられたノードpを削除して下さい:
(1)Pなしの左ノードと右サブツリーは、直接ノードを削除します
親ノード(2)ノードは左のサブツリーのP(右部分木を)持っている、pはpは、左部分木(右部分木を)置きます
(3)左及びノードSはP右部分木であるので、右のサブツリーは、その後、削除ノードS、ノードpに順直接後続ノードS、転送ノードのデータにおけるノードpを見つけ、存在します総左端ノード、従って何左サブツリーをだない、削除ノードS。
教科書の学習と問題解決プロセス
- 質問1:違いは何であるかの木に、高さと深さ?
問題解決策1:概念の反対セットの高さと深さ
の高さは、リーフノードに現在のノードの最長経路であり、そのようなすべてのリーフノードの高さはゼロです。
深さは、ルートノードがゼロであるように、最大経路長の現在のノードにルートからの深さを意味します。
高さが遠い経路長を探して開始するノードから計算され、深さは、ルートからノードへの最大経路長であり、木、木の深さ=高さ+遠い経路長に。- 質問2:実現ヒープ使用のリストに、Qiaowanの本は、コードBinaryTreeNode後、多くの場所が残っている理解していません
問題解決策2:スタックは、ノードの親へのポインタを格納しなければならないように、上方に横断することができ、請求項のように要素を挿入した後。BinaryTreeNodeクラス継承、及び対応する親ポインタとセットメソッドを追加します。
操作に関する要素を追加します
addElementの操作:
場所に要素を追加します。
その特性を維持するためにヒープリオーダー順。
プロセスでのコードのデバッグおよび問題解決
質問1:コードはツリーがパターンで表示されます出力ツリーは、次のように表示されます達成するために失敗しました:
問題1ソリューション:お問い合わせは、問題のブログを発見した後の情報へのインターネットアクセスは、toStringメソッド、出力ツリーパターンを変更します。
ホスティングコード
先週試験間違った質問の概要
先週、何の試験なので、何も間違った質問はありません。
ペアピアレビューと
採点
- フォートワース学習問題やブログ:
- 学習:結論として、詳細な画像に問題がある、と私はいつも問題も時間に誤差の独自の情報源を見つけることができるコードで表示され、スクリーンショットを忘れてしまいました。
- 質問:コンテンツの概要を学ぶには、十分に詳細に説明されていません。
- あなたのコード内の価値の学習や問題:なし
- 15ポイント:スコアに基づいて、私はこのブログの得点を与えます。次のようにスコアは以下のとおりです。
- 適切に使用するマークダウン構文(1点):
- 要素の範囲(1点)テンプレート
教科書の学習と問題解決のプロセス、問題プラス1ポイント()
- コードのデバッグ及び問題解決法、問題プラス1ポイント()
- 週300以上の支店有効なコード(プラス2ポイント)
- その他のプラスのポイント:
- 感情、経験は大きな空の1ポイントを残しません
- 組版ファインプラス1ポイント
- プログレスバーは、学習時間を記録し、1ポイントの状況を改善します
- そこハンズオン新しいコードを書くことは、ある1ポイントを追加します
- クラスの選択は、1ポイントを確認した後、
- 深さの間違った質問を学ぶ、1ポイントを追加
- コメントは真剣に、私は、問題やブログのコードに加えて1ポイントを指摘することができます
- ペアは本物のプラス1ポイントを学びます
コメントは、学生のブログやコードを持っていました
その他(知覚、思考、など、別売)
知識はより多くの仕事と教室での実践までずっと変化している状態になるコードの量に対応し、データ構造の最も最近の研究です。しかし、ブログは懸命に仕事を続け、心の始まりを忘れてはならない、真剣に果たすことになっています!
学習の進捗バー
コードの行の数(追加/累算) | ブログ量(追加/蓄積) | 学習時間(追加/蓄積) | 重要な成長 | |
---|---|---|---|---|
目標 | 10,000行 | 30 | 400時間 | |
最初の週 | 200分の155 | 2/2 | 20/20 | 初期のLinuxのコマンドの把握、JavaアプレットとデバッグJDB |
二三週間 | 625分の470 | 2/4 | 20/40 | 協会は、スキャナ定義されたクラスを使用して定義されます |
4週 | 1444/2069 | 2/4 | 20/60 | IDEAとテストコードを書いて、TDDはデバッグ学び、プラグインをダウンロードしてインストールするには |
5週目 | 1917/3986 | 2/8 | 20/80 | シンプルなクライアントとサーバを書くことを学びます |
6週 | 1324/5310 | 1/9 | 20/100 | Javaのカプセル化、継承、ポリモーフィズム |
7週 | 2795/8105 | 3/12 | 140分の40 | スタック、リンクされたリスト |
8週目 | 1135/9240 | 1/13 | 180分の40 | ソート、選択 |
週ナイン | 3/16 | 220分の40 | バイナリツリー、ヒープソート |