51
written by Wei-ShenLai 1 第第第 第第第第第Search 8-1 搜搜搜搜搜搜搜 8-2 搜搜搜搜搜 (Sequential Search) 8-3 搜搜搜搜搜 (Binary Search) 8-4 搜搜搜搜搜 (Fibonacci Search) 8-5 搜搜搜搜搜 (Interpolation Search)

第八章 資料的搜尋( Search )

  • Upload
    zea

  • View
    113

  • Download
    1

Embed Size (px)

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 Presentation

Citation preview

  • 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