内部強度を実践する高度なデータ構造とアルゴリズムのプログラマのJAVAの建築家

みなさん、こんにちは、私はmakasaだ
、私はノートを学ぶためのビデオを記録する前にこの列はありません、私はフォロースルーします。
同時に、私の基礎のいくつかを統合するために、このブログを書くことによって

データ構造、アルゴリズム:データ構造およびアルゴリズムは、定義により、2つの部分に分割されます。それは彼らが彼らの特定を概説何ですか。無地でシンプルな、私たちは、次の2つのグラフを見てみましょう。ここでは、おそらくあまり理解することができます。


ここでは、線形構造の面で焦点を当てます。
まず、線形構造がに分割されて
格納された1線順次記憶構造:
①配列(好ましくは-1の最大長さ、配列の長さを変更することができない)
配列の長さを解決する方法は不変である:新しい配列、元の配列の長さを作成+1 (追加)または-1(削除)
②:(最後アウトスタック)例:弾丸クリップ
③キュー(FIFO)例:チケットライン
2.線形構造が格納されているリンクされたリストに格納されています。

①単一のリスト:

②循環リスト

③二重リンクリスト


その後、オーバーここでは、検索アルゴリズムの内部で配列を言及する焦点を当て
た検索アルゴリズムが含ま:
①リニア検索:配列の定義で、検索要素と配列要素を横断しているに等しい
②バイナリサーチ(高効率):表面ではありません広い、ターゲット配列と秩序の要件ので。

次のコード配列を貼り付け(CRUD)

cn.makasaをパッケージ化。
輸入java.util.Arrays。

クラスMyArrayという{パブリック
//アレイ定義
プライベートINTを[]の要素;
//コンストラクタ
パブリックMyArrayという(){
要素=新しい新しいINT [0];
}
//は、配列の長さを返し
(公共int型のサイズ){
戻りelements.length。
}

/ **
*、アレイの末尾に要素を追加
* /
公共ボイド追加(INT要素){
新しい配列の//定義1:アレイ+ +1の元の長さの長
INT [] = NEWARRAY新しい新しいINT [elements.length + 1];
//反復元の配列2、元の配列の値を新しいアレイに割り当てられている
ため(INT I = 0; I <elements.length; I ++){
NEWARRAY [I] =要素[I];
}
// 3.配列要素の一端を追加:添加元素の指数、すなわち、元の配列の長さに等しい:
NEWARRAY [elements.length] =要素;
//アレイを割り当てる4新しいオリジナルアレイ。
エレメント= NEWARRAY;
}

/ **
*第二に、すべての要素はコンソールに表示される印刷
* /
公共ボイドショー(){
System.out.printlnは(のArrays.toString(要素));
}

/ **
* 3、削除配列要素
* /
公共ボイド(INTインデックス)を削除{
//は境界索引のうち決定されるため1.
場合(インデックス<0 ||インデックスが> -elements.length 1){
(「範囲外の下付き文字」)新しい新規のRuntimeExceptionを投げる;
}
// 2つの定義Aアレイ-1の元の長さの新しい配列長
INT [] = NEWARRAY新しい新しいINT [-elements.length 1];
// 3。、新しいアレイを横断する場合の要素を削除する前に要素:直接割当要素なら要素を削除した後:値+ 1
のための(INT I = 0; I <newArray.length; I ++){
IF(I <インデックス){
NEWARRAY [ I] =要素[I];
} {他
NEWARRAY [I]の要素= [I + 1];
}
}
.. 4 //古いアレイに新規の配列を割り当てる
エレメント= NEWARRAY。
}

/ **
* IVを与えるために、各要素
* /
パブリックint型GET(INTインデックス){
要素[インデックス]を返す;
}

/ **
* V、要素が指定された位置に挿入されます
* /

INSERTボイドパブリック(INTインデックス、INT要素){
// 1アレイ+ +1の元の長さの新しい配列の長さを定義。。
= newArr新しい新しいINT] [INTを[elements.length + 1];
2 //反復元の配列、分析する場合、私<インデックス直接割り当て場合、新しいアレイ
のための(INT I = 0; I <elements.length; I ++){
IF(I <インデックス){
newArr [I] =要素[I];
} {他
newArr [I + 1] =要素[I];
}
}
newArr [インデックス] =要素;
//元の配列の交換
= newArr要素を;
}


//指定された位置にある要素を置き換え
ます。public void SET(INTインデックス、INT要素){
要素[インデックス] =要素;
}

/ **
*六、线性查找
* /
パブリックINT検索(INT対象){
ため(INT iが= 0; I <elements.length; I ++){
(要素[I] ==ターゲット)場合、{
Iを返します。
}
}
リターン-1。
}

/ **
* 7バイナリサーチ
* /
パブリックINT binarySearch(INT対象){
0 =開始int型、
INT =エンドelements.length 1;
INT = MID(始めるエンド+)/ 2;
INTインデックスを= -1;
一方(trueに){
//この要素は、どのような状況の下ではないか
、//開始位置場合の終了または一致した後、この要素なし
(開始> =端){IF
リターン-1;
}
IF(要素[MID] ==ターゲット) {
戻りMID;
}そうでなければ{
IF(要素[MID]>ターゲット){
エンド=半ば1;
}そうでなければ{
= MID +始まる1;
}
MID = 2 /(+エンド開始);
}
}
}
}
。1
2
。3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131は、
132回
のテストクラス:

makasaTestパッケージ;

輸入cn.makasa.MyArray;

{クラスtestArray公共
メインボイドのpublic static(文字列[]引数){
//オブジェクトの配列を作成する
MyArrayというMyArrayという新しい新しいミリアンペア=();
//配列の長さの取得
int型のサイズ= ma.size();
のSystem.out.println(「オリジナル長さの配列「+サイズ);

//すべての要素は、
(ma.show);

//追加要素は、
(ma.add 9)。
ma.add(8)。
ma.add(7)。
ma.show();

//要素の削除
ma.delete(1);
ma.show();
のSystem.out.println(ma.get(1))
のSystem.out.println(「========== ====「);

//要素の挿入
; ma.insert(0,100)
ma.show();

//要素の変更
ma.set(2,100);
ma.show();
}
}
。1
2
3。
4。
5。
6。
7
8
9
10
11
12である
13である
14
15
16
17
18である
19。
20
21である
22である
23である
24
25
26である
27
28
29
30
31であり、
32
33は
34である
35の
36
出力結果:

長さ0のソース配列
[]
[9、8、7]
[9]、[7]
7

============
[100、9、7]
[100、9、100]

おすすめ

転載: www.cnblogs.com/java188/p/12129065.html