データの構造
1つの基本的な考え方
1.1データ構造とは何ですか
実施例2 N、1からNまでのすべての正の整数を印刷する順序整数正に合格しました:
//递归实现
void PrintN(int N){
if(N){
PrintN(N-1);
printf("%d\n",N);
}
}
再帰プログラムは大きなスペースを占める
に関連する空間の効率で、方法の効率性を解決するために、
第二標準関数
実行時間のプログラムをテストするために)クロックを使用して(
しかし、使用済番組終了時刻のうちのいくつかは0にほぼ等しく、非常に小さくなり、次いで、あなたができる重复
プログラムを実行します
データ構造とは何ですか
論理構造:直鎖構造(一方の1つ)、木(多くの1つ)、図(多くの)
物理的なストレージ構造:メモリを節約するためにコンピュータアレイまたはリンクされたリストで使用されています
抽象データ型
floatまたはdouble気にされていないために、のElementTypeはのタイプです
1.2アルゴリズムとは何ですか
良いアルゴリズムは何ですか
時間計算量T(n)が
プログラム実行時に書かれたアルゴリズムによります耗费时间的长度
。この長さは、多くの場合、入力データのサイズと関連しています。高すぎる結果を待ちませつながります。
宇宙複雑S(n)は、
プログラム実行時に書かれたアルゴリズムによります占用存储单元的长度
。この長さは、多くの場合、入力データのサイズと関連しています。過度の使用は、プログラムが異常に中断された原因と、メモリオーバーランを引き起こす可能性があります。
彼はスペースを占領して、各コールが店舗情報にメモリ空間の一定量を占めるが、唯一の一時的な変数のサイクルのために、サイクルのために、と呼ばれる任意の設計プログラムの疑いがない再帰的なことは一定です。
例:
アルゴリズム1:暴力行為。三つは、Nであることを証明できる、forループネスト。3つの * 1定数
場合、iの和サイクルkは省略されてもよいように、一緒に数で、jは知ることが、図から見ることができる
可能な限りN-の2 nlogNに改善
アルゴリズム3:分割統治は、大規模で複雑な問題に小片に切断し、それらを解決するために分割し、最終的に結果がために結合されている
二つの部分、最大の再帰検索の左半分に分割し、右部分的再帰検索は、最大のいくつかの真ん中検索で最大の
計算時間複雑:複雑さはT(N)の半分の数字の複雑さの、そして可用性によって示されている場合を想像し、全体の問題が解決し、時間のN番号がありますT(N / 2)のサイズの半分からです。
赤色中間部:左から右へ、次いで、スキャンから中間走査するので、各エレメント1が走査され、複雑さがNの定数倍でなければならない
正当は明らかではない(理解されていません)