Cấu Trúc Dữ Liệu Giải Thuật - Chương 3: Tìm Kiếm

22
Chương 4: TÌM KIẾM TÌM KIẾM (SEARCHING)

description

Cấu Trúc Dữ Liệu Giải Thuật - Chương 3: Tìm Kiếm

Transcript of Cấu Trúc Dữ Liệu Giải Thuật - Chương 3: Tìm Kiếm

  • Chng 4: TM KIM(SEARCHING)

    Chng 3: Tm kim

    Ni dungKhi qut v tm kimTm tuyn tnh (Linear Search)Tm nh phn (Binary Search)

    *

    Chng 3: Tm kim

    Khi qut v tm kimTm kim l mt yu cu rt thng xuyn trong i sng hng ngy cng nh trong tin hcV d:Tm kim mt sinh vin trong lpTm kim mt tp tin, th mc trong my n gin ta xt bi ton tm kim nh sau:Cho mt dy s gm cc phn t a1, a2, ..., an. Cho bit trong dy ny c phn t no c gi tr bng X (cho trc) hay khng?*Chng 3: Tm kim

    Chng 3: Tm kim

    Khi qut v tm kimXt hai cch tm kim:Tm kim tuyn tnh (Linear Search) hay cn gi l tm kim tun t (Sequential Search)Tm kim nh phn (Binary Search)*

    Chng 3: Tm kim

    Ni dungKhi qut v tm kimTm tuyn tnh (Linear Search)Tm nh phn (Binary Search)

    *

    Chng 3: Tm kim

    2. Tm tuyn tnh (Linear Seach) tng:Bt u t phn t u tin ca danh sch, so snh ln lt tng phn t ca danh sch vi gi tr X cn tmNu c phn t bng X, thut ton dng li (thnh cng)Nu n cui danh sch m khng c phn t no bng X, thut ton dng li (khng thnh cng)

    If we find a match, the search terminates successfully by returning the index of the elementIf the end of the list is encountered without a match, the search terminates unsuccessfully

    *

    Chng 3: Tm kim

    2. Tm tuyn tnh (Linear Seach)Thut ton:B1: i = 0 ;// bt u t phn t u tinB2: so snh A[i] vi X, c 2 kh nng : A[i] = X : Tm thy. Dng A[i] X : Sang B3B3: i=i+1 // Xt phn t tip theo trong mngNu i=n : Ht mng, khng tm thy. DngNgc li: lp li B2*

    Chng 3: Tm kim

    2. Tm tuyn tnh (Linear Seach)*X=8V d:i=0i=1i=2Dng

    Chng 3: Tm kim

    2. Tm tuyn tnh (Linear Seach)*5Kha tm 71352162815V tr = 2Tm thnh cngS ln so snh: 3

    Chng 3: Tm kim

    *971352162815Khng tm thyS ln so snh: 8Kha tm 2. Tm tuyn tnh (Linear Seach)

    Chng 3: Tm kim

    2. Tm tuyn tnh (Linear Seach)void lsearch (int list[], int n, int key) { int flag = 0;// gi s lc u cha tm thyfor(int i=0; i