1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng cấu trúc dữ liệu thuật toán chương 1 nguyễn đức nghĩa

50 224 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 50
Dung lượng 6,96 MB

Nội dung

C U TRÚC D LI U VÀ THU T TOÁN Data Structures and Algorithms Nguy N C NGH A B mơn Khoa h c Máy tính i h c Bách khoa Hà n i Tel: 0438696121 (Off), 0903210111 (Mob) nghiand@soict.hut.edu.vn Ch ng CÁC KI N TH C C C u trúc d li u thu t toán - N Ngh a B môn KHMT N I DUNG 1.1 Ví d m đ u 1.2 Thu t tốn đ ph c t p 1.3 Ký hi u ti m c n 1.4 Gi ngôn ng 1.5 M t s k thu t phân tích thu t tốn C u trúc d li u thu t toán - N Ngh a B môn KHMT B N Ví d m đ u • Bài tốn tìm dãy l n nh t: Cho dãy s a1, a2, … , an Dãy s ai, ai+1 , …, aj v i ≤ i ≤ j ≤ n đ c g i dãy c a dãy cho ∑jk=i ak đ c g i tr ng l ng c a dãy Bài toán đ t là: Hãy tìm tr ng l ng l n nh t c a dãy con, t c tìm c c đ i giá tr ∑jk=i ak đ n gi n ta g i dãy có tr ng l ng l n nh t dãy l n nh t • Ví d : N u dãy cho -2, 11, -4, 13, -5, c n đ a câu tr l i 20 (là tr ng l C u trúc d ng c a dãy 11, -4, 13) li u thu t toán - N Ngh a B mơn KHMT Thu t tốn tr c ti p • Thu t tốn đ n gi n đ u tiên có th ngh đ gi i tốn đ t là: Duy t t t c dãy có th ai, ai+1 , …, aj v i ≤ i ≤ j ≤ n tính t ng c a m i dãy đ tìm tr ng l • Tr c h t nh n th y r ng, t ng s dãy có th c a dãy cho C(n,2) + n = n2/2 + n/2 C u trúc d ng l n nh t li u thu t tốn - N Ngh a B mơn KHMT Thu t tốn tr c ti p • Thu t tốn có th cài đ t đo n ch ng trình sau: int maxSum = 0; for (int i=0; i T[k], j*=j, i*=(i+j) div + 1, th d*=j*i*+1 = j - (i+j) div  j -(i+j-1)/2 - i = (j - i + 1)/2 = d/2 – N u x = T[k], d* = d  C u trúc d li u thu t toán - N Ngh a B mơn KHMT Binary-Search (ti p) • V y ln có: d*  d/2 • Do vịng l p k t thúc d  1, nên t suy thu t tốn ph i k t thúc • G i dp giá tr c a j - i + l n l p th p  d0 = n Khi dp  dp-1/2, p  • Thu t tốn k t thúc t i b = log n c p n u dp  1, u x y p • V y th i gian tính c a thu t toán O(log n) C u trúc d li u thu t toán - N Ngh a B môn KHMT Các mô t khác c a thu t toán Binary Search Function mid=bsearch1(L,p,q,key) Function mid=bsearch2(L,p,q,key) while q>p mid=floor((p+q)/2); if keyp mid=floor((p+q)/2); if key==L(mid) break break p=mid; if key==L(p) mid=p; else mid=0; end Tìm th y r i d ng?! C u trúc d elseif key 0) { i = n / 2; if (a[i] == x) return true; if (a[i] < x) { /* Ti p t c tìm n a trái */ a = &a[i + 1]; n = n - i - 1; } else /* Ti p t c tìm n a ph i */ n = i; } return false; } C u trúc d li u thu t tốn - N Ngh a B mơn KHMT Câu l nh đ c tr ng • nh ngh a Câu l nh đ c tr ng câu l nh đ c th c hi n th ng xuyên nh t c ng nh b t k câu l nh thu t tốn • N u gi thi t th i gian th c hi n m i câu l nh b ch n b i h ng s th i gian tính c a thu t tốn s c v i s l n th c hi n câu l nh đ c tr ng • => đánh giá th i gian tính có th đ m s l n th c hi n câu l nh đ c tr ng C u trúc d li u thu t tốn - N Ngh a B mơn KHMT Ví d : FibIter function Fibiter(n) begin i:=0; j:=1; for k:=1 to n begin j:= j+i; i:= j-i; end; Fibiter:= j; end; C u trúc d Câu l nh đ c tr ng • S l n th c hi n câu l nh đ c tr ng n • V y th i gian tính c a thu t toán O(n) li u thu t toán - N Ngh a B mơn KHMT Ví d : Thu t tốn ví d m đ u int maxSum =0; for (int i=0; i

Ngày đăng: 04/12/2015, 17:41

TỪ KHÓA LIÊN QUAN