Bài toán và thuật toán

19 458 1
Tài liệu đã được kiểm tra trùng lặp
Bài toán và thuật toán

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bµi 4 Bµi to¸n vµ thuËt to¸n (tiÕt thø 5) Mét sè vÝ dô vÒ thuËt to¸n (TiÕp) ThuËt to¸n t×m kiÕm tuÇn tù (Sequential Search) ThuËt to¸n t×m kiÕm nhÞ ph©n (Binary Search) Bµi to¸n 1: Cho d·y A gåm N sè nguyªn kh¸c nhau a 1 ,a 2 ,… a N vµ sè nguyªn k. T×m chØ sè i (nÕu cã) mµ a i = k. 1. X¸c ®Þnh c¸c yÕu tè cña bµi to¸n: Input: ? N, a 1 , a 2 ,….a N , k Output: ? ChØ sè i mµ a i = k 2. Nêu ý tưởng giải bài toán: Xét bài toán trong trường hợp: N=5, k= 9 Kết quả ??? Vị trí thứ 2 (i = 2) Suy nghĩ thế nào để được kết quả đó?? Nếu N = 1000 thì sao nhỉ????? ? ? ? ? ? ? 6 9 9 15 15 17 17 29 29 a 1 a a 2 2 a a 3 3 a a 4 4 a a 5 5 6 9 9 15 15 17 17 29 29 a 1 a a 2 2 a a 3 3 a a 4 4 a a 5 5 N= 5, k = 9 Duyệt từng phần tử từ a 1 đến a N . Vậy cần những biến nào? Khởi tạo ra sao? ý tư ởng thế nào? Cần 1 biến: - Biến chạy i (i có giá trị từ 1 đến 5). Khởi tạo: i = 1 ý tưởng: Duyệt phần tử thứ i, bắt đầu từ a 1 . Nếu a i = k thì đưa ra i rồi kết thúc. Nếu không, tăng i lên một đơn vị duyệt tiếp. Khi nào thì bài toán kết thúc? Khi có i thỏa mãn hoặc khi đã duyệt hết các phần tử (i > N) a 1 a N i = 1 1 2 3 a 1 N N, a 1 , a 2 ,….a N , k i  1 i >N a i = k i  i + 1 Kh«ng cã phÇn tö nµo cã gt = k + - - + 6 9 9 15 15 17 17 29 29 a 1 a a 2 2 a a 3 3 a a 4 4 a a 5 5 §­a ra i råi kÕt thóc k = 9 5, 6, 9,15,17,29,9 i  1 1 >5 ? 6 = 9 ? i  1 + 1 2 >5 ? 9 = 9 ? VÞ trÝ thø 2 6 9 9 15 15 17 17 29 29 a 1 a a 2 2 a a 3 3 a a 4 4 a a 5 5 LÇn duyÖt 1 LÇn duyÖt 1 i = 1 i = 1 Qua l­íi Qua l­íi Kh«ng tm Kh«ng tm LÇn duyÖt 2 LÇn duyÖt 2 i = 2 i = 2 Qua l­íi Qua l­íi Tháa m·n Tháa m·n N=5, k= 9 Bài toán 2: Cho dãy A tăng gồm N số nguyên khác nhau a 1 ,a 2 , a N số nguyên k. Tìm chỉ số i (nếu có) mà ai = k. 1. Xác định các yếu tố của bài toán: Input: ? N, a 1 , a 2 ,.a N , k Output: ? Vị trí số có giá trị bằng k (vị trí i) [...]... a3 a4 a5 N=5, k= 17 Lần 1 Giua = 3 Dau = 4 Lần 2 Giua = 4 Thỏa mãn Đ/K Cuoi = 5 Kết thúc Tổng kết: - Phân biệt 2 thuật toán: tìm kiếm tuần tự tìm kiếm nhị phân - Tính ưu việt của từng thuật toán - Bài tập về nhà: 1: 1.42 1.48/21 SBT 2: Dùng thuật toán tìm kiếm tuần tự để giải quyết bài toán sau: Cho dãy A gồm N số nguyên a1, a2,.,aN Tìm số các số dương trong dãy Hướng dẫn: -Cần 2 biến: Biến i để...2 Nêu ý tưởng giải bài toán: Xét bài toán trong trường hợp: N=5, k= 17 6 a1 9 a2 15 a3 17 a4 Kết quả ??? Số ở vị trí thứ 4 Nhưng nếu N = 1.000.000.000 số thì sao? 29 a5 6 a1 9 a2 15 a3 17 a4 29 a5 N= 5, k = 17 Cách 1: Dùng thuật tìm kiếm tuần tự!!!! Cách 2: Dùng thuật nhị phân (chia để trị) Nhận xét: -Dãy tăng nên nếu có phần tử ai = k thì... lượt các phần tử Biến t để đếm các phần tử >0 -Khởi tạo biến: i = 1, t = 0 -Tư tưởng: Duyệt từng ai, nếu ai>0 thì tăng t lên 1 đơn vị (t = t+1) sau đó tăng i lên 1 đơn vị để duyệt phần tử tiếp theo Bài toán kết thúc khi i>N Cảm ơn các thầy cô giáo!! cảm ơn các thân yêu! con học sinh ... ai nếu có thì nằm ở phía nào lập dãy mới ntn ? agiua= k Vị trí cần tìm agiua< k ai nếu có thì nằm ở phía nào lập dãy mới ntn? Chúng ta cần mấy biến? ????????? - Biến Dau, Cuoi để chỉ vị trí đầu tiên cuối cùng của dãy (mỗi lần kiểm tra phải lập một dãy mới do đó phải có 2 biến này) - Biến Giua = [(Dau + Cuoi)/2] (phần nguyên) Khởi tạo biến thế nào? - Dau = 1, Cuoi = N (xét dãy A đầu tiên) 6 N, . biệt 2 thuật toán: tìm kiếm tuần tự và tìm kiếm nhị phân. - Tính ưu việt của từng thuật toán. - Bài tập về nhà: 1: 1.42 1.48/21 SBT 2: Dùng thuật toán tìm. Bài toán 2: Cho dãy A tăng gồm N số nguyên khác nhau a 1 ,a 2 , a N và số nguyên k. Tìm chỉ số i (nếu có) mà ai = k. 1. Xác định các yếu tố của bài toán:

Ngày đăng: 03/09/2013, 10:10

Tài liệu cùng người dùng

Tài liệu liên quan