(Javaレベル2 /パブリックレベル2)プログラミング試験チュートリアルノート1

基本的なデータ構造とアルゴリズム

1.1.1試験ポイントの概要1

(1)アルゴリズムの基本概念(時間計算量と空間計算量)。
(2)データ構造の定義、データの論理構造とストレージ構造、グラフィック表現、線形構造と非線形構造の概念。
(3)線形テーブルの定義、その順次ストレージ構造、挿入および削除操作。
(4)スタックとキューの定義、それらの順次ストレージ構造、および基本操作。
(5)線形単一リンクリスト、二重リンクリスト、および循環リンクリストの構造と基本操作。
(6)ツリーの基本概念、二分木の定義とそのストレージ構造、二分木のプレオーダー、ミドルオーダー、ポストオーダーのトラバーサル。
(7)シーケンス検索およびバイナリ検索アルゴリズム、基本的なソートアルゴリズム(切り替え、選択、および挿入ソート)。

1.アルゴリズムの概念
(1)アルゴリズムとデータ構造の関係:データ構造の問題の場合、アルゴリズムの効率は通常、コンピューターでのデータ構造の表現に直接関係します。
(2)アルゴリズムの基本的な特性:実現可能性、確実性、有限性、および十分なインテリジェンス。
(3)アルゴリズムの基本要素:アルゴリズム内のデータの計算と操作、およびアルゴリズムの制御構造。
(4)アルゴリズム設計の基本的な方法:列挙法、誘導法、再帰、再帰、半再帰技術、バックトラッキング法。
(5)アルゴリズムの複雑さ:時間の複雑さ、空間の複雑さ。
2.データ構造の基本概念
(1)データ構造とは:
簡単に言えば、データ構造とは、関連するデータ要素の集合を指します。これは主に、データの論理構造とデータのストレージ構造に分けられます。
グラフィックス(2)データ構造は
ここで省略されています
(3)線形および非線形構造構成:
線形構造および非線形構造は空のデータ構造である可能性があります。このデータ構造の操作は線形構造の規則に従って処理され、線形構造に属します。

3.線形テーブルとそのシーケンシャルストレージ構造
(1)線形テーブルの基本概念線形テーブルは、n(> = 0)個のデータ要素a1、a2、... an、テーブル内の各データ要素で構成される有限シーケンスです。 、最初の要素を除いて、先行要素は1つだけであり、最後の要素を除いて、後続の要素は1つだけです。
つまり、線形テーブルは空のテーブルであるか、次のように表すことができます。
(a1、a2、...、ai、...、an)
ここで、ai(i = 1,2、... n)はデータオブジェクトに属する要素。通常、線形テーブルではAノードとも呼ばれます。
空でない線形テーブルの構造的特徴は次のとおりです
。①ルートノードa1が1つだけあり、先行がありません
。②ターミナルノードanが1つだけで、後続のコンポーネントがありません
。③ルートノードとターミナルノードを除いて、他のノードには、先行詞が1つだけあり、後続詞も1つだけあります。
線形テーブル内のノードのデータnは、線形テーブルの長さと呼ばれます。n= 0の場合、空のテーブルと呼ばれます。
(2)
線形テーブルのシーケンシャルストレージ構造①線形テーブルのすべての要素が占めるストレージスペースは連続的です
。②線形テーブルのデータ要素は、論理的な順序でストレージスペースに格納されます。
線形テーブルのシーケンシャルストレージ構造では、前後の2つの要素がストレージスペースで隣接しており、先行要素は後者の要素の後ろに格納する必要があることがわかります。
(3)シーケンステーブルの挿入操作
長さnの線形テーブルを(a1、a2、...、ai、...、an)とし
ます。ここで、線形テーブルのi番目の要素であるinsertが必要です。 aiの前に新しい要素bがあり、挿入後に結果が得られます。長さがn + 1の線形テーブルは
(a'1、a'2、...、a'j、a'j + 1、...、a 'n、a'n + 1)
挿入前後の2つの線形テーブルへ要素は次の関係を満たします:
a'j(aj 1 <= j <= i-1
b j + i
aj-1 i + 1 <= j <= n + 1
}

(4)シーケンステーブルの削除操作
長さnの線形テーブルを
(a1、a2、...、ai、...、an)とし
ます。 i番目の要素を削除したい場合、削除後
長さn-1の線形テーブルが**(a'1、a'2、...、a'j、...、a'n-として取得されます。 1)**
次に、削除の前後の2つの線形テーブルの要素は、次の関係を満たします
。aj{aj 1 <= j <= i-1
aj + 1 i <= j <= n-1
}

4.スタックとキュー
(1)スタックとその基本操作

スタックの基本概念スタックは実際には線形テーブルですが、特殊な線形テーブルです。この線形テーブル構造では、一端が閉じています。要素の挿入と削除は許可されていません。 ;もう一方の端は開いており、要素の挿入と削除が可能です。
つまり、スタックは、一方の端での挿入と削除に制限された線形テーブルです。スタックでは、挿入と削除が許可されている端をスタックの最上位と呼び、挿入と削除が許可されていないもう一方の端をスタックの最下部と呼びます。スタックは常に挿入される最後の要素であり、したがって最初に削除される要素です。この要素はスタックの最下部にある要素の反対です。つまり、スタックは「先入れ先出し」の原則に従ってデータを編成します。 「アウト」または「後入れ先出し」。したがって、スタックにはメモリ機能があります。
通常、ポインタtopはスタックの最上部の位置を示すために使用され、ポインタbottomはスタックの最下部を指すために使用されます。要素をスタックに挿入することをプッシュ操作と呼び、要素をスタックから削除することをアンスタック操作と呼びます。トップポインタtopは、スタック内の要素の変更を動的に反映します。
②操作の順序とストレージスタック
プッシュ操作
プッシュ操作とは、スタック位置に新しい要素を挿入することを意味します。
アン
スタック操作アンスタック操作とは、スタックの最上位の要素を削除し、それを指定された変数に割り当てることです。スタック
の最上位要素の読み取り
スタックの最上位要素の読み取りとは、スタックの最上位要素を指定された変数に割り当てることを指します。この操作では、スタックの最上位要素は削除されず、その値が変数に割り当てられるだけであることに注意する必要があります。したがって、この操作では、スタックの最上位ポインターは変更されません。
スタックの最上位のポインタがゼロの場合、スタックは空であり、最上位の要素を読み取ることができません。
(2)
①(
キューの基本概念)キュー(Equeue)は、一方の端で挿入し、もう一方の端で削除できる線形テーブルを指します。キューは「先入れ先出し」または「先入れ先出し」とも呼ばれます。アウト」線形テーブル、彼は先着順の原則を具体化しています。
②循環キューとその基本操作
いわゆる循環キューは、キュー記憶域スペースの最後の位置を最初の位置にラップし、キューがループで使用するための論理リング・スペースを形成することです。
エンキュー操作
エンキュー操作とは、循環キューの最後に新しい要素を追加することです。
デキュー操作
デキュー操作とは、循環キューの先頭にある要素を終了し、それを指定された変数に割り当てることです。

5.線形リンクリスト
(1)線形リンクリストの基本概念線形リスト
のチェーンストレージ構造を線形リンクリストと呼びます。線形リンクリスト
のチェーンストレージ構造に適応するために、コンピュータのストレージスペースは次のように分割されます。小さなブロックであり、各小さなブロックは数バイトを占めます。これらの小さなブロックは通常、ストレージノードと呼ばれます。
(2)線形リンクリストとその基本操作
線形リンクリストから指定した要素を
探す②線形リンクリストの挿入
③線形リンクリストの削除
(3)循環リンクリストとその基本操作

6.ツリーと二分木
(1)ツリーの基本概念
ツリーは単純な非線形構造です。
ツリーデータ構造では、すべてのデータ要素間の関係には明らかな階層特性があります。
ツリー構造では、通常、次の原則に従って階層化されます
。①ルートノードは最初の層にあります。
②同じレイヤー上のすべてのノードのすべての子ノードは次のレイヤーにあります。③木の最大レベルを木の深さと呼びます。
④ツリーでは、リーフノードにサブツリーがありません。
(2)二分木の性質と概念
①空でない二分木の概念には、ルートノードが1つしかない。各ノードには最大2つのサブツリーがあり、それぞれノードの左側のサブツリーおよび右側のサブツリーと呼ばれます。
②二分木の基本特性
**特性1 **二分木のK次レベルには、最大2つのK-1パワー(K> = 1)ノードがあります。
プロパティ2深さMの二分木は最大2Mのノードを持ちます。
プロパティ3どの二分木でも、次数0のノードは、次数2のノードよりも常に1つ多いノードです。
プロパティ4はNノードの二分木であり、その深さは少なくとも[log2n] +1です。ここで、[log2n]はlog2nの整数部分を表します。


完全二分木と完全二分木完全二分木の最後のレベルを除いて、各レベルのすべてのノードには2つのサブノードがあります。
完全な二分木の最後の層を除いて、各層のノード数は最大に達します。最後の層では、最後の層の一部のノードのみが欠落しています。

完全な二分木には、次の2つのプロパティもあります。
プロパティ5Nノードの完全な二分木の深さは[log2n] +1です。

プロパティ6完全な二分木にn個のノードがあるとします。ルートノードから開始する場合は、自然数1からNを使用して、シーケンス内のノードに番号を付けます(左から右へ)。その数は** k(k = 1)です。 、2、...、n)**のノードには、次の結論があります。

k = 1の場合、ノードはルートノードであり、親ノードはありません。K> 1の場合、ノードの親ノードの番号はINT(k / 2)です。
2k <= nの場合、kの番号が付けられたノードの左側の子ノード番号は2kです。それ以外の場合、ノードには左側の子ノードがありません(明らかに右側の子ノードはありません)。
2k + 1 <= nの場合、kの番号が付けられたノードの右の子ノード番号は2k + 1です。それ以外の場合、ノードには右の子ノードがありません。
(3)二分木の記憶構造
コンピュータでは、二分木は通常、連鎖記憶構造を採用しています。
(4)二分木の探索二分木の探索とは、二分木のすべてのノードを繰り返し訪問することを指します。
①プレオーダートラバーサル
②ミドルオーダートラバーサル
③ポストオーダートラバーサル

7.検索技術
(1)シーケンシャル検索
シーケンシャル検索は、シーケンシャル検索とも呼ばれます。シーケンシャル検索とは、通常、線形テーブル内の指定された要素を検索することです。
(2)二分探索
二分探索は、順番に保存された順序付きリストにのみ適しています。

8.仕分け技術
(1)交換仕分けいわゆる交換仕分けとは、データ要素間の相互交換による仕分け方法のことです。
バブルソートとクイックソートは、交換クラスのソート方法に属します。
①バブルソート
②クイックソート
(2)挿入ソート
①単純挿入ソート
いわゆる挿入ソートとは、順序付けされていない各要素を、順序付け済みの線形テーブルに一度に挿入することです。
②ヒルソートヒルソート
の基本的な考え方は、無秩序なシーケンス全体を挿入ソートのためにいくつかの小さなサブシーケンスに分割します。
(3)並べ替えの選択
①簡単な
選択並べ替え並べ替えを選択する基本的な考え方は次のとおりです:
線形テーブル全体をスキャンし、そこから最小の要素を選択して、テーブルの一番上にスワップします(これが本来あるべき場所です) ;
次に残りを確認します。サブテーブルが空になるまで、次のサブテーブルにも同じ方法を使用します。
単純な選択ソートでは、最悪の場合、n(n-1)/ 2を比較する必要があります。

ヒープの並べ替えヒープの定義は次のとおりです。** hi≥h2ihi≤h2i+ 1またはhi≤h2i+ 1hi≤h2iを
満たす場合に限り、n個の要素(h、h2、
.hn )を持つシーケンス+1 ** (i = 1、2、。、n / 2)はヒープと呼ばれます。ヒープの定義から、最上位の要素(つまり、最初の要素)が最大のアイテムである必要があることがわかります。最悪の場合、ヒープソートに必要な比較の数はO(nlog2n)です。






この記事は、Java二次試験の教科書に指定された全国コンピュータランク試験からの抜粋です。
よりエキサイティングなチャプターノートについては、フォローアップブログをご覧ください。プログラミング狂気/ Xiaoyuer。

おすすめ

転載: blog.csdn.net/yanxiaolxy/article/details/109107817