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

Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 1 - Trịnh Anh Phúc

75 79 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 75
Dung lượng 699,72 KB

Nội dung

Bài giảng Cấu trúc dữ liệu và thuật toán - Chương 1: Các khái niệm cơ bản cung cấp cho người đọc các kiến thức: Thuật toán và độ phức tạp, ký hiệu tiệm cận, giả ngôn ngữ, một số kĩ thuật phân tích thuật toán. Mời các bạn cùng tham khảo.

CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN CuuDuongThanCong.com https://fb.com/tailieudientucntt NỘI DUNG 1.1 Ví dụ mở đầu 1.2 Thuật toá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 CuuDuongThanCong.com Tham khảo tài liệu PGS TS Nguyễn Đức Nghĩa https://fb.com/tailieudientucntt 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 gọi dãy dãy cho ∑jk=i ak gọi trọng lượng dãy Bài toán đặt là: Hãy tìm trọng lượng lớn 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 dãy lớn • 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ượng dãy 11, -4, 13) CuuDuongThanCong.com Tham khảo tài liệu PGS TS Nguyễn Đức Nghĩa https://fb.com/tailieudientucntt Thuật tốn trực tiếp • Thuật tốn đơn giản nghĩ để giải tốn đặt là: Duyệt tất dãy ai, ai+1 , …, aj với ≤ i ≤ j ≤ n tính tổng dãy để tìm trọng lượng lớn • Trước hết nhận thấy rằng, tổng số dãy dãy cho C(n,2) + n = n2/2 + n/2 CuuDuongThanCong.com Tham khảo tài liệu PGS TS Nguyễn Đức Nghĩa https://fb.com/tailieudientucntt Thuật tốn trực tiếp • Thuật tốn cài đặt đoạn chương trình sau: int maxSum = 0; for (int i=0; ip 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 dừng?! CuuDuongThanCong.com Tham khảo tài liệu PGS TS Nguyễn Đức Nghĩa 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; } CuuDuongThanCong.com Tham khảo tài liệu PGS TS Nguyễn Đức Nghĩa https://fb.com/tailieudientucntt Câu lệnh đặc trưng • Định nghĩa Câu lệnh đặc trưng câu lệnh thực thường xuyên câu lệnh thuật tốn • Nếu giả thiết thời gian thực câu lệnh bị chặn số thời gian tính thuật tốn cỡ với số lần thực câu lệnh đặc trưng • => Để đánh giá thời gian tính đếm số lần thực câu lệnh đặc trưng CuuDuongThanCong.com Tham khảo tài liệu PGS TS Nguyễn Đức Nghĩa https://fb.com/tailieudientucntt 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; CuuDuongThanCong.com Tham khảo tài liệu PGS TS Nguyễn Đức Nghĩa Câu lệnh đặc trưng • Số lần thực câu lệnh đặc trưng n • Vậy thời gian tính thuật tốn O(n) https://fb.com/tailieudientucntt Ví dụ: Thuật tốn ví dụ mở đầu int maxSum =0; for (int i=0; i

Ngày đăng: 11/01/2020, 17:57

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN