1. Trang chủ >
  2. Thể loại khác >
  3. Tài liệu khác >

CHƯƠNG VIII: TÌM KiẾM 3. Tìm kiếm nhị phân

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.13 MB, 117 trang )


3. Tìm kiếm nhị phân



 Ý tưởng: Sử dụng dãy đã sắp xếp ta tìm cách thu hẹp phạm

vi tìm kiếm sau mỗi lần so sánh khóa với số hạng được chọn.

aGiua

Giua=[ (N+1)/2].



3. Tìm kiếm nhị phân



 Nếu kGiua = x thì Giua là chỉ số cần tìm.

 Nếu kGiua > k thì việc tìm kiếm tiếp theo chỉ xét trên dãy

k1, ka2,..., kGiua–1



 Nếu aGiua < k thì thực hiện tìm kiếm trên dãy kGiua+1,

kGiua+2,..., kN.



 Quá trình trên sẽ được lặp lại



3. Tìm kiếm nhị phân

 Thuật toán

Bước 1. Nhập N, k1 k2,..., kn và giá trị khóa x.

Bước 2. Dau ⇐ 1, Cuoi ⇐ N Giua ⇐ .

Bước 4. Nếu kGiua = x thì thông báo chỉ số Giua, rồi kết thúc

Bước 5. Nếu kGiua > x thì đặt Cuoi = Giua – 1 rồi chuyển đến bước 7.

Bước 6. Dau ⇐ Giua + 1

Bước 7. Nếu Dau > Cuoi thì thông báo dãy không có số hạng có giá trị trùng với

x, rồi kết thúc.

Bước 8. Quay lại bước 3.



k = 21, N =10



k = 25, N =10



i



1



2



3 4



5



6



7



8



9



10



i



1



2



3



4



5 6



7



8



9



10



A



2



4



5 6



9



21



22



30



31



33



A



2



4



5



6



9 21



22



30



31



33



Dau



1



6



6



Dau



1



6



6



7



8



Cuoi



10



10 7



Cuoi



10



10



7



7



7



Giua



5



8



Giua



5



8



6



7



aGiua



9



30 21



aGiua



9



30



21



22



Lượt



0



1



Lượt



0



1



2



3



6



2



Sau hai lượt thì aGiua = k. Vậy chỉ số cần tìm là i = Giua = 6.



4



Tại lượt thứ tư Dau > Cuoi nên kết luận trong dãy A không có

toán hạng nào có giá trị là 25 cả.



3. Tìm kiếm nhị phân



 Nhận xét và đánh giá

 Trường hợp tốt nhất, đôệ phức tạp tính toán là O(1), trong

trường hợp xấu và trung bình là O(lgN) ,



 Tuy nhiên với dãy chưa được sắp xếp thì cần có chi phí cho

viêệc sắp xếp.



CHƯƠNG IV: DANH SÁCH (LIST)



 Khái niệm danh sách

 Biểu diễn danh sách trong máy tính.

 Một số nhận xét.

 Kiểu dữ liệu con trỏ (pointer) và việc cấp phát/thu hồi bộ nhớ

động.



. Khái niệm danh sách



a) Định nghĩa



 Danh sách là một tập sắp thứ tự các phần tử cùng kiểu.

 Các phần tử được sắp theo thứ tự “trước- sau”

 Danh sách con gồm các phần tử liên tiếp từ ai đến aj của danh

sách.



 Nếu i=1 gọi là phần đầu (prefix)

 Nếu j=n gọi là phần cuối (postfix).



1. Khái niệm danh sách



 Dãy con là một DS tạo thành bằng cách loại từ DS một số

phần tử. Ví dụ, DS = (a,b,c,d,e,f). Khi đó:



 (c,d,e) là một danh sách con của DS

 (a, b) là một phần đầu của DS

 (c,d,e,f) là một phần cuối của DS

 (a,c,f) là một dãy con của DS



Xem Thêm
Tải bản đầy đủ (.pptx) (117 trang)

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×