第八章 資料的搜尋( search )
DESCRIPTION
第八章 資料的搜尋( Search ). 8-1 搜尋的基本概念 8-2 循序搜尋法 (Sequential Search) 8-3 二元搜尋法 (Binary Search) 8-4 費氏搜尋法 (Fibonacci Search) 8-5 內插搜尋法 (Interpolation Search). 8-1 搜尋的基本概念. 在資料處理的過程中時, 是否能在最短時間內搜尋到所需要的資料, 是一個相當值得關心的議題。而影響搜尋時間長短的主要因素包括有演算法、資料儲存的方式及結構。底下我們就來看看搜尋的基本分類及常見的搜尋方法。. 8-1-1 搜尋的分類. - PowerPoint PPT PresentationTRANSCRIPT
-
Search8-1 8-2 (Sequential Search)8-3 (Binary Search)8-4 (Fibonacci Search)8-5 (Interpolation Search)
-
8-1
-
8-1-1
-
8-1-2 (Static Search)(Dynamic Search)
-
8-2(Sequential Search) O(nlogn)O(n)
-
(Sequential Search) n O ( n ) ( n + 1 ) /2 Procedure Sequential(K,data)Beginfor i1 to Size [if Ki = Data thenreturn found]return not foundEnd
-
8-3(Binary Search)Procedure Binary(K,Data)BeginLeft1;RightSize;while Left 9
2
3
5
8
9
11
12
16
18
1
2
3
4
5
6
7
8
9
11
-
8 . 3 . 1
-
8 . 3 . 2 n (data record)1. (Sequential Search)(Search Length)2. (Binary Search)3. 4. (comparison)? (1+2+3+...n)/n=(n+1)/2
log2(n+1) log2(n+1) -1 O(log2n)
-
8-4(Fibonacci Search)F ( n ) F0=0 ,F1=1Fi=Fi-1+Fi-2 i 20,1,1,2,3,5,8,13,21,34,55,89,...0 1
-
n k k Fib(k+1)n+1 k 2 Fib(k)(k-1)(Fib(k-1))(k-2)(Fib(k)+Fib(k-2))n+1 m Fib(k+1)-m=n+1m=Fib(k+1)-(n+1) m 1
Fib(k)
Fib(k-1)
Fib(k)+Fib(k-2)
-Fib(k-2)
+Fib(k-2)
-Fib(k-3)
+Fib(k-3)
-Fib(k-4)
+Fib(k-4)
K-1
K-2
K
-
8 . 4 . 1 n=33 Fib(8+1)=33+1k=8Fib(8)=21Fib(7)=13Fib(8)+Fib(6)=21+8=29
21
13
29
8
18
26
32
5
11
16
20
24
28
31
33
3
7
10
12
15
17
19
23
25
27
30
24
2
1
4
6
9
14
22
-8
+8
+5
-5
-3
+3
-3
+3
-2
+2
-2
+2
-2
+2
-1
+1
-1
+1
-1
+1
-1
-1
+1
-1
+1
-1
-1
+1
-1
-1
-1
-1
-1
-
8 . 4 . 2 n=18 m=Fib(7+1)-(18+1)=21-19=2k=8Fib(7)=13-2=11Fib(6)=8-2=6Fib(7)+Fib(5)-2=13+5-2=16
13
8
18
5
11
16
20
3
7
10
12
15
17
19
2
1
4
6
9
14
+5
-5
-3
+3
-2
+2
-2
+2
-1
+1
-1
+1
-1
+1
-1
-1
-1
-1
-1
11
6
16
3
9
14
18
1
5
8
10
13
15
17
0
1
2
4
7
12
+5
-5
-3
+3
-2
+2
-2
+2
-1
+1
-1
+1
-1
+1
-1
-1
-1
-1
-1
-
n n Fib(k+1) n+1Fib(k)Fib(k-2)key Fib(k)key key key 1 Fib(k)-1 1 Fib(k)-1 Fib(k)key key Fib(k)+1 Fib(k+1)-1 Fib(k)+1 Fib(k+1)-1 O (log2N )
-
Procedure FibonacciSearch(K,Data)Begin//Fib(k+1)-m=n+1iFk-1;pFk-2;q Fk-3if Data > Kii i+m;while i0 [case [:Data < Ki://if q=0[ i 0;]else[ i i-q; t p; p q; //Fibk-3 q t-q; //Fibk-4]:Data=Ki:return i;:Data>Ki://if q=0 i 0;else[ i i+q; p p-q; //Fibk-4 q q-p; //Fibk-5]]]End
Fib(k-1)
Fib(k-1)+Fib(k-3)
Fib(k-4)
Fib(k-2)
Fib(k-3)
-Fib(k-3)
+Fib(k-3)
-Fib(k-4)
+Fib(k-4)
-Fib(k-5)
+Fib(k-5)
-Fib(k-5)
i
q
p
i=i-q
q
p
i=i+q
q
p
- 8-5(Interpolation Search) Mid=low + (( key - data[low] ) / ( data[high] - data[low] ))* ( high - low )key data[high]data[low]n 1.1,2,3...n 2.low=1 high=n3.low
-
Procedure InterpolationSearch(K,Data)BeginLeft1;RightSize;while Left Right then retirn -1;case [:Data < KMiddle:RightMiddle-1;:Data = KMiddle:return Middle;:Data > KMiddle:LeftMiddle+1;]]return -1;EndO(log n)
-
A
A
10
11
12
13
14
15
16
17
18
11
1
2
3
4
5
6
7
8
9
11=11
10
11
12
13
14
15
16
17
18
15
1
2
3
4
5
6
7
8
9
15=15
(15-10)/(18-10)*(9-1)+1=6
10
13
14
15
21
23
29
31
55
29
1
2
3
(11-10)/(18-10)*(9-1)+1=2
4
5
6
7
8
9
10
13
14
15
(29-10)/(55-10)*(9-1)+1=4
29>15
21
23
29
31
55
1
2
3
4
5
6
7
8
9
(29-21)/(55-21)*(9-5)+5=5
29>21
10
13
14
15
21
23
29
31
55
1
2
3
4
5
6
7
8
9
(29-23)/(55-23)*(9-6)+6=6
29>23
10
13
14
15
21
23
29
31
55
1
2
3
4
5
6
7
8
9
(29-29)/(55-29)*(9-7)+7=7
29=23
10
13
14
15
21
23
29
31
55
16
1
2
3
4
5
6
7
8
9
(16-10)/(55-10)*(9-1)+1=2
16>13
10
13
14
15
21
23
29
31
55
1
2
3
4
5
6
7
8
9
(16-14)/(55-14)*(9-3)+3=3
16>14
10
13
14
15
21
23
29
31
55
1
2
3
4
5
6
7
8
9
(16-15)/(55-15)*(9-4)+4=4
16>15
10
13
14
15
21
23
29
31
55
1
2
3
4
5
6
7
8
9
-
AVLC
-
AVL-Treeheight balanced binary tree1962Adelson-VelskiiLandisAVL-TreeAVL TreeTTLTR1.TLTRAVL Tree2.|Htl-Htr|1HtlHtrTLTRbalanced factorBF(P)PBF(P)= Htl-Htr
BF=-2
Q
S
R
BF=1
N
BF=0
M
BF=1
P
BF=0
8
7
4,5,6,7,8
6
5
4
-
NAVL Tree1.2.AVL TreeLLLRRLRRNBF2-2PLLNPLRNPRLNPRRNP
-
LL
P
1
PR
Q
QL
0
QR
h
h
h
2
PR
QL
1
QR
h+1
P
Q
h
h
N
0
PR
QL
0
QR
h+1
P
Q
h
h
N
30
50
50
40
40
30
2
1
0
40
30
50
1
1
1
50
40
20
50
40
60
30
45
50
40
60
60
30
45
30
45
20
2
1
1
20
-
LR
1
PR
QL
0
QR
h
P
Q
h
h
2
PR
QL
-1
b
h
P
Q
h+1
h
CR
-1/0
PR
QL
1/0
0
h
P
Q
h-1 or h
h
CL
C
CR
CL
C
h-1 or h
N
N
N
N
h-1 or h
h-1 or h
50
40
45
50
40
45
2
-1
0
45
40
50
1
1
1
50
40
42
60
30
45
50
40
60
30
45
50
40
60
30
45
42
2
1
1
42
-
RL
-1
PL
QR
0
QL
h
P
Q
h
h
-2
PL
QR
1
QL
h+1
P
Q
h
h
N
0
PL
QR
0
QL
h+1
P
Q
h
h
N
50
60
56
50
60
56
2
1
0
56
60
50
1
1
1
50
40
52
60
70
56
50
60
40
70
56
50
56
40
60
52
52
-2
1
1
70
-
RR
-1
PL
QR
0
QL
h
P
Q
h
h
-2
PL
QL
-1
b
h
P
Q
h+1
h
CR
CL
C
PL
QL
-1/0
h
P
Q
h-1 or h
h
CL
CR
C
1/0
0
h-1 or h
N
N
N
N
h-1 or h
h-1 or h
50
60
70
50
60
70
-2
-1
0
60
70
50
1
1
1
50
60
80
40
70
55
50
60
40
70
55
70
60
60
50
55
80
-2
-1
-1
40
-
AVL Tree1.AVL TreeR0R1R-1L0L1L-1NBF2-2PLLNPLRNPRLNPRRNP
-
R0
1
PR
QL
0
QR
h
P
Q
h
h
2
PR
QL
0
QR
h
P
Q
h
h-1
N
1
PR
QL
-1
QR
h
P
Q
h
h-1
50
60
42
40
45
2
55
2
2
50
60
42
40
45
2
38
2
1
43
50
60
40
45
2
42
43
1
43
38
2
38
2
0
-1
0
1
-
R1
1
PR
QL
1
QR
h
P
Q
h-1
h
2
PR
QL
1
QR
h-1
P
Q
h
h-1
N
0
PR
QL
0
QR
h-1
P
Q
h
h-1
1
32
55
50
70
35
50
70
35
40
45
2
40
45
1
2
2
1
1
32
2
1
40
50
35
45
2
1
2
32
70
0
0
-
R-1
2
50
60
20
30
1
50
60
2
35
40
43
20
30
1
1
35
40
43
-1
50
60
20
30
1
1
35
40
43
55
PR
h-1
1
PR
QL
-1
h-1
P
Q
h
QL
h-1 or h-2
h-1
P
Q
CL
0
CR
C
h-1 or h-2
h-1 or h-2
h-1 or h-2
CL
b
CR
C
2
PR
QL
-1
h-1
P
Q
h-1
CL
b
CR
C
N
-
L0
-1
PL
QR
0
QL
h
P
Q
h
h
-2
PL
QR
0
QL
h
P
Q
h
h-1
N
-1
PL
QR
1
QL
h
P
Q
h
h-1
50
40
62
60
55
2
2
2
50
40
62
60
55
2
2
1
50
40
60
1
45
64
58
58
64
62
2
64
55
2
58
-2
0
1
-1
-
L-1
-1
PL
QR
-1
QL
h
P
Q
h-1
h
-2
PL
QR
-1
QL
h-1
P
Q
h
h-1
N
0
PL
QR
0
QL
h-1
P
Q
h
h-1
50
40
65
60
55
2
1
2
68
45
50
40
65
60
55
2
1
1
68
-2
-1
60
65
50
55
2
1
2
40
68
0
0
1
-
L1
-1
PL
QR
1
h-1
P
Q
h
CR
b
CL
C
-2
PL
QR
1
h-1
P
Q
h-1
CR
b
CL
C
N
QR
h-1
P
Q
CR
CL
C
0
PL
h-1
h-1 or h-2
h-1 or h-2
h-1 or h-2
h-1 or h-2
0
50
40
65
60
1
2
58
55
54
45
50
40
65
60
1
1
58
55
54
2
-1
50
40
65
60
1
1
58
54
55
0
-
2-3C
-
2-3 TreeC2-3 Tree2-3 TreeLdataLdataLdata
L
R
L
R
LR
-
2-3 Tree1.2.
L
L
L
R
L
R
L
R
L
R
L
R
-
2-3 Tree
45
30
70
10
20
40
50
60
80
85
60
-
2-3 Tree
45
30
70
10
20
40
50
60
80
85
90
90
45
30
70
85
10
20
40
50
60
80
90
-
2-3 Tree
55
45
30
70
85
45
70
10
20
40
50
60
80
90
55
45
30
70
85
30
10
20
40
50
60
85
80
90
55
10
20
40
50
60
80
90
55
-
2-3 Tree
45
70
30
85
15
20
40
50
60
80
90
55
15
10
45
70
30
85
15
20
40
50
60
80
90
55
10
45
70
15
30
85
20
40
50
60
80
90
55
10
-
2-3 Tree
45
70
15
30
85
20
40
50
60
80
90
55
10
25
45
70
15
30
85
20
40
50
60
80
90
55
10
25
-
2-3 Tree
45
70
15
30
85
20
40
50
60
80
90
55
10
25
17
17
45
70
15
30
85
20
40
50
60
80
90
55
10
25
17
45
70
15
30
85
20
40
50
60
80
90
55
10
25
17
-
2-3 TreeP
90
96
85
70
80
75
95
95
90
90
70
80
75
96
96
85
70
80
75
95
95
80
70
75
96
95
90
96
85
70
80
90
96
90
85
85
80
70
80
96
90
96
85
70
80
90
70
80
96
80
85
70
95
-
2-3 Tree
50
80
35
60
15
95
70
96
80
35
70
50
15
95
96
90
85
90
85
30
70
60
65
75
18
35
17
20
25
70
35
65
75
18
17
20
25
30
-
m-wayC
-
m-way Treem-way TreenA0,(K1,A1) ,(K2,A2).. ,(Kn,An)AiKiAiK1...Kn
-
m-1m-1
5
5
5
7
7
5
7
12
12
5
7
6
12
6
5
7
18
12
18
6
5
7
14
12
18
6
14
-
5
7
8
12
6
10
4
8
5
7
10
12
6
5
7
10
4
6
4
7
5
10
6
4
-
BC
-
BBm-way1.2.P1.Pm-12.Pm-12-3
-
B
50
54
20
40
45
10
25
30
62
67
53
72
76
85
88
48
98
5
60
70
80
90
95
98
50
20
40
10
25
30
5
45
48
54
62
67
53
72
76
85
88
60
70
80
90
95
98
-
B
50
20
40
10
25
30
99
5
45
48
54
62
67
53
72
76
85
88
60
70
80
91
93
95
50
20
40
10
25
30
5
45
48
54
62
67
53
72
76
85
88
60
70
80
90
98
99
98
99
90
95
50
20
40
10
25
30
5
45
48
54
62
67
53
72
76
85
88
60
70
80
90
98
99
95