Sau khi học xong chương 1 Tổng quan về Cấu trúc dữ liệu và giải thuật này người học có thể hiểu về: Khái niệm giải thuật, các kiểu dữ liệu cơ bản, các kiểu dữ liệu trừu tượng, các cấu trúc dữ liệu cơ bản, mối quan hệ giữa CTDL và giải thuật.
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT NGÔ QUANG THẠCH Email: thachnq@gmail.com ĐT: 01273984123 CHƯƠNG 1: Tổng quan CTDL GT Khái niệm giải thuật Các kiểu liệu Các kiểu liệu trừu tượng Các cấu trúc liệu Mối quan hệ CTDL giải thuật Giải toán phần mềm • Xác định tốn • Tìm cấu trúc liệu biểu diễn tốn • Tìm thuật tốn • Lập trình • Kiểm thử phần mềm • Tối ưu chương trình Giải thuật Giải thuật hay Thuật toán dùng để phương pháp hay cách thức (method) để giải vấn đề Thuật toán chuỗi hữu hạn lệnh, lệnh có ngữ nghĩa rõ ràng thực với lượng hữu hạn tài nguyên khoảng hữu hạn thời gian Giải thuật minh họa ngôn ngữ tự nhiên (natural language), sơ đồ (flow chart) mã giả (pseudo code) Các tính chất giải thuật Hữu hạn (finiteness): giải thuật phải luôn kết thúc sau số hữu hạn bước Xác định (definiteness): bước giải thuật phải xác định rõ ràng phải thực xác, quán Hiệu (effectiveness): thao tác giải thuật phải thực lượng thời gian hữu hạn – Ngoài giải thuật cịn phải có đầu vào (input) đầu (output) Ngôn ngữ tự nhiên Giải thuật giải PT bậc dạng ax + b = sau: Bước 1: Nhận giá trị tham số a, b Bước 2: Xét giá trị a xem có hay khơng? Nếu a = làm bước 3, a khác khơng làm bước Bước 3: (a 0) Nếu b ta kết luận phương trình vơ số nghiệm, b khác ta kết luận phương trình vơ nghiệm Bước 4: ( a khác 0) Ta kết luận phương trình có nghiệm x = -b/a Flowchart Flow chart thể nét phát thảo cấu trúc tính logic chương trình Các ký hiệu sử dụng Flowchart TT KÝ HIỆU DIỄN GIẢI Bắt đầu chương trình, Kết thúc chương trình Luồng xử lý Điều khiển lựa chọn Nhập Xuất Xử lý, tính tốn gán Trả giá trị (return) Điểm nối liên kết Ví dụ: Nhập vào số nguyên a, b, c xuất hình với giá trị bình phương số Bắt đầu a, b, c a=a*a b=b*b c=c*c a, b, c Kết thúc Ví dụ: If … else… Sai Biểu thức điều kiện Đúng Xây dựng thao tác xử lý liệu Từ yêu cầu xử lý thực tế, cần tìm giải thuật tương ứng để xác định trình tự thao tác máy tính phải thi hành kết mong muốn, bước xây dựng giải thuật cho tốn Ví dụ Một chương trình quản lý điểm thi sinh viên cần lưu trữ điểm số sinh viên Do sinh viên có điểm số ứng với mơn học khác nên liệu có dạng bảng sau: Sinh viên Môn Môn Môn Môn … SV 10 … SV … SV … Chọn phương án cho toán quản lý điểm Phương án: Dùng mảng để giải toán Mảng chiều Mảng chiều Dùng phương án khác Thiết kế cấu trúc, ghi … Các tiêu chuẩn đánh giá cấu trúc liệu Phản ánh thực tế toán Phù hợp với thao tác liệu Tiết kiệm tài nguyên hệ thống (bộ nhớ trong) Các tiêu chuẩn đánh giá cấu trúc liệu Phản ánh thực tế : Đây tiêu chuẩn quan trọng nhất, định tính đắn tồn toán Cần xem xét kỹ lưỡng dự trù trạng thái biến đổi liệu chu trình sống để chọn cấu trúc liệu lưu trữ thể xác đối tượng thực tế Các tiêu chuẩn đánh giá cấu trúc liệu Ví dụ: Một số tình chọn cấu trúc lưu trữ sai : - Chọn biến số nguyên int để lưu trữ tiền thưởng bán hàng (được tính theo công thức tiền thưởng bán hàng = trị giá hàng * 5%), làm tròn giá trị tiền thưởng gây thiệt hại cho nhân viên bán hàng =>Trường hợp phải sử dụng biến số thực để phản ánh kết cơng thức tính thực tế - Trong trường trung học, lớp nhận tối đa 28 học sinh Lớp có 20 học sinh, tháng học sinh đóng học phí $10 Chọn biến số nguyên unsigned char ( khả lưu trữ 255) để lưu trữ tổng học phí lớp học tháng, xảy trường hợp có thêm học sinh nhận vào lớp giá trị tổng học phí thu $260, vượt khỏi khả lưu trữ biến chọn, gây tình trạng tràn, sai lệch Các tiêu chuẩn đánh giá cấu trúc liệu Phù hợp với thao tác đó: Tiêu chuẩn giúp tăng tính hiệu đề án: việc phát triển thuật tốn đơn giản, tự nhiên hơn; chương trình đạt hiệu cao tốc độ xử lý Các tiêu chuẩn đánh giá cấu trúc liệu Ví dụ: Một tình chọn cấu trúc lưu trữ khơng phù hợp: Cần xây dựng chương trình soạn thảo văn bản, thao tác xử lý thường xảy chèn, xoá sửa ký tự văn Trong thời gian xử lý văn bản, chọn cấu trúc lưu trữ văn trực tiếp lên tập tin gây khó khăn xây dựng giải thuật cập nhật văn làm chậm tốc độ xử lý chương trình phải làm việc nhớ Trường hợp nên tìm cấu trúc liệu tổ chức nhớ để lưu trữ văn suốt thời gian soạn thảo LƯU Ý : Đối với ứng dụng , cần ý đến thao tác sử dụng nhiều để lựa chọn cấu trúc liệu cho thích hợp Các tiêu chuẩn đánh giá cấu trúc liệu Tiết kiệm tài nguyên hệ thống: Cấu trúc liệu nên sử dụng tài nguyên hệ thống vừa đủ để đảm nhiệm chức Thơng thường có loại tài nguyên cần lưu tâm : CPU nhớ Nếu tổ chức sử dụng đề án cần có xử lý nhanh chọn cấu trúc liệu yếu tố tiết kiệm thời gian xử lý phải đặt nặng tiêu chuẩn sử dụng tối ưu nhớ, ngược lại Các tiêu chuẩn đánh giá cấu trúc liệu Ví dụ: Một số tình chọn cấu trúc lưu trữ lãng phí: - Sử dụng biến int (2 bytes) để lưu trữ giá trị cho biết tháng hành Biết tháng nhận giá trị từ 1-12, nên cần sử dụng kiểu char (1 byte) đủ - Để lưu trữ danh sách học viên lớp, sử dụng mảng 50 phần tử (giới hạn số học viên lớp tối đa 50) Nếu số lượng học viên thật 50, gây lãng phí Trường hợp cần có cấu trúc liệu linh động mảng- ví dụ danh sách liên kết Một số câu lệnh C Tự đọc tài liệu tham khảo Bài tập 1: Vẽ biểu đồ luồng tiến trình cho việc tính sau: Tính tổng: S = + + + + n , với n>0 Bài tập 2: Vẽ biểu đồ luồng tiến trình cho việc tính sau: = + + +…+ , với n>0 Bài tập Tìm cấu trúc liệu lưu trữ số nguyên lớn a, b Số nguyên lớn số có đến vài nghìn chữ số Ví dụ: a=999999999999999999999999999999999999999999 999999999999999999999999999999999999999999999 999999999999999999999999999999999999999999999 b=888888888888888888888888888888888888888888 888888888888888888888888888888888888888888888 888888888888888888888888888888888888888888888 Bài tập Tìm phương án tổ chức cấu trúc liệu cho thời khoá biểu sinh viên: Tiết Tiết Tiết Tiết Tiết Tiết Tiết Tiết Tiết Tiết Tiết 10 Thứ Thứ Thứ Thứ Thứ Thứ CN ... time 1. 1 for each pair in the list 1. 1 .1 if it is not in ordered 1. 1 .1. 1 exchange them End Bubble sort for outter in (n-2) 1. 1 for inner in (n- 2- outter) 1. 1 .1 if Ainner +1 < Ainner 1. 1 .1. 1 swap...CHƯƠNG 1: Tổng quan CTDL GT Khái niệm giải thuật Các kiểu liệu Các kiểu liệu trừu tượng Các cấu trúc liệu Mối quan hệ CTDL giải thuật Giải tốn phần mềm • Xác định tốn • Tìm cấu trúc liệu. .. Ainner +1 End Bubble sort Giải thuật ngơn ngữ lập trình Giải thuật 1: Pascal Giải thuật 2: C++ procedure BubbleSort(var A: list); var i,j: int; begin for i := to n -1 for j := to (n -1 - i) if A[j +1]