Tiểu Luận Đồ Án Môn Học Cấu Trúc Dữ Liệu và Giải Thuật

Đồ án nghiên cứu Tiểu luận đồ án môn học cấu trúc dữ liệu và giải thuật, thiết kế chi tiết, tính toán kỹ thuật theo tiêu chuẩn, đánh giá tính khả thi dự án.

Người đăng

Ẩn danh

Thể loại

đồ án môn học

2020

54
5
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CAM ĐOAN

1. CHƯƠNG 1: GIỚI THIỆU

1.1. Giới thiệu đề bài

1.2. Cấu trúc

1.3. Dữ liệu mẫu

1.4. Các chức năng (Liệt kê các chức năng sẽ xây dựng)

2. CHƯƠNG 2: TÌM KIẾM VÀ SẮP XẾP TRÊN MẢNG CẤU TRÚC

2.1. Nhập danh sách đồng hồ

2.2. Kiểm tra

2.3. Kết quả chạy

2.4. Tìm thông tin ĐH theo hãng sản xuất dùng Linearsearch và Binarysearch

2.5. Sắp xếp danh sách theo Mã sản phẩm dùng Shaker Sort

2.6. Sắp xếp danh sách theo Mã sản phẩm dùng Selection Sort

2.7. Sắp xếp danh sách theo Hãng sản xuất dùng Interchange Sort

2.8. Sắp xếp danh sách theo Trọng lượng dùng Bubble Sort

2.9. Sắp xếp danh sách theo Giá dùng Insertion Sort

2.10. Sắp xếp danh sách theo thời gian Bảo hành dùng Quick Sort

3. CHƯƠNG 3: TÌM KIẾM VÀ SẮP XẾP TRÊN DANH SÁCH LIÊN KẾT

3.1. Định nghĩa DSLK

3.1.1. Định nghĩa phần thông tin

3.1.2. Định nghĩa nút

3.1.3. Định nghĩa DSLK

3.2. Các thao tác cơ bản trên DSLK

3.2.1. Khởi tạo DSLK

3.2.2. Nhập DSLK

3.3. Xuất DSLK

3.4. Tìm kiếm thông tin đồng hồ theo mã sản phẩm

3.4.1. Chương trình con

3.4.2. Kiểm tra

3.4.3. Chạy kết quả

3.5. Tìm thông tin ĐH theo tên hãng sản xuất dùng Linear Search

3.5.1. Chương trình con

3.5.2. Kiểm tra

3.5.3. Chạy kết quả

3.6. Sắp xếp danh sách theo mã sản phẩm dùng Shaker Sort

3.7. Sắp xếp danh sách theo Mã sản phẩm dùng Selection Sort

3.7.1. Chương trình con

3.7.2. Kiểm tra

3.7.3. Chạy kết quả

3.8. Sắp xếp danh sách theo Mã sản phẩm dùng Interchange Sort

3.8.1. Chương trình con

3.8.2. Kiểm tra

3.8.3. Chạy kết quả

3.9. Sắp xếp danh sách theo Trọng lượng dùng Bubble Sort

3.9.1. Chương trình con

Tóm tắt

I. Giới thiệu

Chương này trình bày tổng quan về cấu trúc dữ liệugiải thuật trong việc quản lý thông tin sản phẩm đồng hồ. Đề bài yêu cầu xây dựng chức năng tìm kiếm và sắp xếp trên các cấu trúc dữ liệu, nhằm hỗ trợ quản lý danh mục đồng hồ. Các thông tin cần quản lý bao gồm mã sản phẩm, hãng sản xuất, giới tính, trọng lượng, thời gian bảo hành và giá bán. Việc lựa chọn cấu trúc dữ liệu phù hợp là rất quan trọng để tối ưu hóa hiệu suất của các thuật toán tìm kiếm và sắp xếp.

1.1 Đề bài

Đề bài yêu cầu xây dựng một hệ thống quản lý thông tin đồng hồ, trong đó các thông tin như mã sản phẩm, hãng sản xuất, giới tính, trọng lượng, thời gian bảo hành và giá bán được lưu trữ và quản lý. Việc sử dụng cấu trúc dữ liệu phù hợp sẽ giúp cho việc truy xuất và xử lý thông tin trở nên hiệu quả hơn. Các thuật toán tìm kiếm và sắp xếp sẽ được áp dụng để thực hiện các chức năng như nhập, xuất, tìm kiếm và sắp xếp danh sách đồng hồ.

1.2 Cấu trúc dữ liệu

Cấu trúc dữ liệu được định nghĩa bao gồm các trường thông tin cần thiết cho việc quản lý sản phẩm đồng hồ. Mỗi sản phẩm sẽ được lưu trữ dưới dạng một cấu trúc với các trường như mã sản phẩm, hãng sản xuất, giới tính, trọng lượng, thời gian bảo hành và giá. Việc định nghĩa rõ ràng các trường này sẽ giúp cho việc lập trình và triển khai các thuật toán trở nên dễ dàng hơn.

II. Tìm kiếm và sắp xếp trên mảng cấu trúc

Chương này tập trung vào việc thực hiện các chức năng tìm kiếm và sắp xếp trên mảng cấu trúc. Các thuật toán như Linear Search, Binary Search, Shaker Sort, Selection Sort, và Quick Sort sẽ được áp dụng để tìm kiếm và sắp xếp danh sách đồng hồ. Việc sử dụng các thuật toán này không chỉ giúp tối ưu hóa thời gian xử lý mà còn nâng cao hiệu quả trong việc quản lý thông tin.

2.1 Nhập danh sách đồng hồ

Để nhập danh sách đồng hồ, cần xây dựng các chương trình con hỗ trợ việc nhập thông tin cho từng sản phẩm. Các thông tin như mã sản phẩm, hãng sản xuất, giới tính, trọng lượng, thời gian bảo hành và giá sẽ được nhập vào mảng cấu trúc. Việc nhập liệu chính xác là rất quan trọng để đảm bảo tính toàn vẹn của dữ liệu trong quá trình xử lý.

2.2 Tìm kiếm mã sản phẩm

Chương trình con sẽ thực hiện tìm kiếm thông tin đồng hồ theo mã sản phẩm bằng hai phương pháp: Linear Search và Binary Search. Linear Search sẽ duyệt qua từng phần tử trong mảng, trong khi Binary Search yêu cầu mảng phải được sắp xếp trước. Việc áp dụng các thuật toán này giúp người dùng nhanh chóng tìm ra thông tin cần thiết mà không mất nhiều thời gian.

III. Tìm kiếm và sắp xếp trên danh sách liên kết

Chương này trình bày cách thực hiện tìm kiếm và sắp xếp trên danh sách liên kết. Danh sách liên kết cho phép thêm và xóa các phần tử một cách linh hoạt hơn so với mảng. Tuy nhiên, việc tìm kiếm trong danh sách liên kết chỉ có thể sử dụng Linear Search do không thể truy cập trực tiếp vào các phần tử. Các thuật toán sắp xếp như Selection Sort và Bubble Sort sẽ được áp dụng để sắp xếp danh sách theo mã sản phẩm.

3.1 Định nghĩa DSLK

Danh sách liên kết (DSLK) được định nghĩa với các nút chứa thông tin sản phẩm và con trỏ đến nút tiếp theo. Việc định nghĩa rõ ràng cấu trúc của DSLK sẽ giúp cho việc quản lý và thao tác với danh sách trở nên dễ dàng hơn. Các thao tác như thêm, xóa và tìm kiếm sẽ được thực hiện thông qua các chương trình con được xây dựng riêng biệt.

3.2 Tìm kiếm thông tin đồng hồ

Để tìm kiếm thông tin đồng hồ theo mã sản phẩm trong DSLK, chỉ có thể sử dụng Linear Search. Phương pháp này sẽ duyệt qua từng nút trong danh sách cho đến khi tìm thấy thông tin cần thiết. Mặc dù không hiệu quả bằng Binary Search, nhưng Linear Search vẫn đảm bảo tính chính xác trong việc tìm kiếm thông tin.

01/02/2025

Trích đoạn nội dung tài liệu

Chương 1: Giới thiệu 1.1 Giới thiệu đề bài Xây dựng chức năng tìm kiếm và sắp xếp trên các cấu trúc hỗ trợ quản lý danh mục đồng hồ được bán một đơn vị gồm các thông tin: Mã sản phẩm (MaSP); Hãng sản xuất (HangSX); Giới tính (đồng hồ nữ, đồng hồ nam, trung tính, .2 Cấu trúc Mô tả cấu trúc được yêu cầu, chọn CTDL để thể hiện, khai báo/định nghĩa cấu trúc Thông tin sản phẩm đồng hồ cần quản lý gồm: - MaSP: Mã sản phẩm, gồm một chuỗi ký tự số có chiều dài 11 ký tự. - HangSX: Hãng sản xuất, chiều dài mỗi chữ khoảng 10 ký tự - GioiTinh: Giới tính, chỉ gồm 1 chữ với chiều dài chữ khoảng 10 ký tự - TrongLuong: Trọng lượng đồng hồ - BaoHanh: Thời gian bảo hành của đồng hồ - Gia: Giá bán của đồng hồ Cấu trúc dữ liệu hỗ trợ quản lý thông tin các đồng hồ: - MaSP: chuỗi gồm 11 ký tự số - HangSX: chuỗi tối đa 10 ký tự - GioiTinh: chuỗi tối đa 10 ký tự - TrongLuong: số nguyên không âm (TrongLuong >= 0) - BaoHanh: số nguyên không âm (BaoHanh >= 0) 7 Bài thực hành Cấu trúc dữ liệu và giải thuật - Gia : số thực dương (Gia>=0) Định nghĩa cấu trúc đồng hồ: 1.3 Dữ liệu mẫu >= 10 thông tin đối tượng cần quản lý STT Mã SP Hãng SX Giới tính Trọng lượng 1 1910 Casio Nam 70g 2 1901 Tag Nam 160g Heuer 3 1903 Rolex Nam 156g 4 1904 Omega Trung 55g tính 5 1907 Longines Nữ 140g s 6 1906 Tissot Trung 180g tính 7 1905 Timex Trung 100g tính 8 1908 Calvin Nữ 90g Klein 9 1902 Movado Nam 100g 10 1909 Citizen Nam 150g 8 Bài thực hành Cấu trúc dữ liệu và giải thuật 1.4 Các chức năng (Liệt kê các chức năng sẽ xây dựng) Các chức năng trên mảng cấu trúc - Nhập danh sách đồng hồ - Xuất danh sách đồng hồ - Tìm thông tin ĐH theo mã số x (dùng Linear Search và Binary Search) - Tìm thông tin ĐH theo hãng sản xuất (dùng Linear Search và Binary Search) - Sắp xếp danh sách theo Mã sản phẩm (dùng Shaker Sort) - Sắp xếp danh sách theo Mã sản phẩm (dùng Selection Sort) - Sắp xếp danh sách theo Mã sản phẩm (dùng Interchange Sort) - Sắp xếp danh sách theo Trọng lượng (dùng Bubble Sort) - Sắp xếp danh sách theo Giá (dùng Insertion Sort) - Sắp xếp danh sách theo thời gian Bảo hành (dùng Quick Sort) - Sắp xếp danh sách theo Mã sản phẩm (dùng Merge Sort) Các chức năng trên danh sách liên kết - Nhập danh sách đồng hồ - Xuất danh sách đồng hồ - Tìm thông tin ĐH theo mã sp x (dùng Linear Search ) - Tìm thông tin ĐH theo tên (dùng Linear Search ) - Sắp xếp danh sách theo Mã sản phẩm (dùng Shaker Sort) - Sắp xếp danh sách theo Mã sản phẩm (dùng Selection Sort) - Sắp xếp danh sách theo Mã sản phẩm (dùng Interchange Sort) - Sắp xếp danh sách theo Trọng lượng (dùng Bubble Sort) - Sắp xếp danh sách theo Giá (dùng Insertion Sort) - Sắp xếp danh sách theo thời gian Bảo hành (dùng Quick Sort) - Sắp xếp danh sách theo Trọng lượng (dùng Merge Sort) 9 Bài thực hành Cấu trúc dữ liệu và giải thuật Chương 2: Tìm kiếm và sắp xếp trên mảng cấu trúc 2.1 Nhập danh sách đồng hồ 2.1 Chương trình con Để nhập danh sách đồng hồ, cần xây dựng hai chương trình con gồm: - void nhap_o(dongho &a): hỗ trợ nhập thông tin một sinh viên gồm MaSp, HangSX, GioiTinh, TrongLuong, Baohanh, Gia - void nhap_mang(dongho a[], int n) hỗ trợ nhập danh sách đồng hồ 10 Bài thực hành Cấu trúc dữ liệu và giải thuật 2.2 Kiểm tra (Hàm main kiểm tra ctc) 11 Bài thực hành Cấu trúc dữ liệu và giải thuật 2.3 Kết quả chạy 2.2 Xuất thông tin đồng hồ 2.1 Chương trình con -Để xuất danh sách sản phẩm đồng hồ ,ta cũng cần phải xây dựng 2 chương trình con gồm : 12 Bài thực hành Cấu trúc dữ liệu và giải thuật +Xuất ô :void xuat_o(dongho a ):hỗ trợ xuất thông tin đã nhập của một sản phẩm đồng hồ +Xuất mảng : void xuat_mang (dongho a[],int n):hổ trợ xuất mảng sản phẩm đồng hồ 2.3 Kết quả chạy 13 Bài thực hành Cấu trúc dữ liệu và giải thuật 2.3 Tìm kiếm mã sản phẩm với Linearsearch và Binarysearch: 2.1 Chương trình con Thực hiện tìm kiếm với khóa chính là Mã sản phẩm (dữ liệu khóa) Để tìm thông tin theo mã số của đồng hồ, cần xây dựng như sau:  void_LinearSearch(dongho a[], int n): giải thuật tìm kiếm tuyến tính, hỗ trợ tìm ra đồng hồ có mã số cần tìm.  void BinarySearch(dongho a[], int n): giải thuật tìm kiếm nhị phân, hỗ trợ tìm ra đồng hồ có mã số cần tìm. 14 Bài thực hành Cấu trúc dữ liệu và giải thuật 2.2 Kiểm tra 15 Bài thực hành Cấu trúc dữ liệu và giải thuật Hàm main test cho phần tìm kiếm theo mã sp bằng Linear Search Hàm main test cho phần tìm kiếm theo mã số bằng Binary Search 2.3 Kết quả chạy  Kết quả chạy tìm thông tin đồng hồ có mã số 1903 có trong danh sách hàm test 16 Bài thực hành Cấu trúc dữ liệu và giải thuật  Kết quả chạy tìm thông tin đồng hồ có mã số 1902 không có trong danh sách test 2.4 Tìm thông tin ĐH theo hãng sản xuất dùng Linearsearch và Binarysearch 2.1 Chương trình con Thực hiện tìm kiếm với khóa chính là Hãng sản xuất (dữ liệu khóa) Để tìm thông tin theo mã số của đồng hồ, cần xây dựng như sau:  void_LinearSearch_h(dongho a[], int n): giải thuật tìm kiếm tuyến tính, hỗ trợ tìm ra đồng hồ có hãng sản xuất cần tìm.

17 Bài thực hành Cấu trúc dữ liệu và giải thuật  void BinarySearch_h(dongho a[], int n): giải thuật tìm kiếm nhị phân, hỗ trợ tìm ra đồng hồ có hãng sản xuất cần tìm. 18 Bài thực hành Cấu trúc dữ liệu và giải thuật 2.2 Kiểm tra 19 Bài thực hành Cấu trúc dữ liệu và giải thuật Hàm main test cho phần tìm kiếm theo hãng sản xuất bằng Linear Search Hàm main test cho phần tìm kiếm theo hãng dản xuất bằng Binary Search 2.3 Chạy kết quả  Kết quả chạy tìm thông tin đồng hồ có hãng sản xuất Omega có trong danh sách hàm test 20 Bài thực hành Cấu trúc dữ liệu và giải thuật  Kết quả chạy tìm thông tin đồng hồ có hãng sản xuất Casio không có trong danh sách hàm test 2.5 Sắp xếp danh sách theo Mã sản phẩm dùng Shaker Sort 2.1 Chương trình con  void ShakerSort(dongho arr[],int n): giải thuật sắp xếp các thông tin theo mã số. Về ý tưởng giải thuật xuất phát từ cuối dãy, xét các phần tử gần nhau, nếu là nghịch thế thì hoán vị hai phần tử này với mục đích đẩy phần tử bé nhất về đầu dãy. Trong mỗi lần sắp xếp sẽ thực hiện 2 lượt:  Lượt đi: đẩy phần tử bé nhất về đầu dãy.

 Lượt về: đẩy phần tử lớn nhất về cuối dãy.  void swap(dongho &a, dongho &b): hàm hoán vị hỗ trợ cho phần sắp xếp trong chương trình con. 21 Bài thực hành Cấu trúc dữ liệu và giải thuật 2.2 Kiểm tra 22 Bài thực hành Cấu trúc dữ liệu và giải thuật Hàm main test cho phần sắp xếp thông tin theo mã sản phẩm bằng Shaker Sort.3 Chạy kết quả 2.6 Sắp xếp danh sách theo Mã sản phẩm dùng Selection Sort 2.1 Chương trình con Để sắp xếp thông tin theo mã sản phầm, ta cần xây dựng như sau:  void SelectionSort(dongho arr[], int n): giải thuật sắp xếp bằng chọn trực tiếp. Với ý tưởng chọn phần tử nhỏ nhất trong mảng, đưa phần tử này về đầu mảng, tiếp tục lặp lại để sắp xếp mảng từ vị trí thứ 2.

 void hoanvi(dongho &a, dongho &b): hàm hoán vị hỗ trợ việc hoán vị các phần tử trong chương trình con SelectionSort. 23 Bài thực hành Cấu trúc dữ liệu và giải thuật 2.2 Kiểm tra Hàm main test cho phần sắp xếp thông tin theo mã sản phẩm bằng Selection Sort.3 Chạy kết quả 24 Bài thực hành Cấu trúc dữ liệu và giải thuật 2.7 Sắp xếp danh sách theo Hãng sản xuất dùng Interchange Sort 2.1 Chương trình con Để sắp xếp thông tin theo Hãn sản xuất, ta cần xây dựng như sau:  void InterchangeSort(dongho arr[], int n): giải thuật sắp xếp bằng đổi chỗ trực tiếp. Với ý tưởng bắt đầu từ đầu mảng, tìm các nghịch thế (phần tử sau bé hơn phần tử trước) của phần tử này, thực hiện hoán vị nếu có, sau đó lặp lại từ phần tử kế tiếp cho đến khi mảng được sắp xếp.  void hoanvi(Bangdiem &a, Bangdiem &b): thuật toán hoán vị hỗ trợ hoán vị các phần tử nghịch thế trong chương trình con Interchange Sort.

25 Bài thực hành Cấu trúc dữ liệu và giải thuật 2.2 Kiểm tra Hàm main test cho phần sắp xếp thông tin theo mã sản phẩm bằng Interchange Sort.3 Chạy kết quả 26 Bài thực hành Cấu trúc dữ liệu và giải thuật 2.8 Sắp xếp danh sách theo Trọng lượng dùng Bubble Sort 2.1 Chương trình con Để sắp xếp thông tin theo trọng lượng, ta cần xây dựng như sau:  void BubbleSort(dongho a[], int n): giải thuật sắp xếp nổi bọt. Với ý tưởng xuất phát từ cuối dãy, hoán vị các cặp nghịch thế kế tiếp nhau và cứ lặp lại cho đến khi mảng được sắp xếp.  void hoanvi(dongho &a, dongho &b): hàm hoán vị hỗ trợ cho việc hoán vị các nghịch thế trong chương trình con Bubble Sort. 27 Bài thực hành Cấu trúc dữ liệu và giải thuật 2.2 Kiểm tra Hàm main test cho phần sắp xếp thông tin theo trọng lượng bằng Bubble Sort.3 Chạy kết quả 28 Bài thực hành Cấu trúc dữ liệu và giải thuật 2.9 Sắp xếp danh sách theo Giá dùng Insertion Sort 2.1 Chương trình con Để sắp xếp thông tin theo giá, ta cần xây dựng như sau:  void InsertionSort(dongho arr[], int n): giải thuật sắp xếp chèn trực tiếp.

Với ý tưởng chia mảng cần sắp xếp thành 2 mảng con, mảng T chứa arr[0], mảng P chứa phần còn lại. Chọn 1 phần tử arr[i] trong P, tìm vị trí thích hợp và chèn arr[i] vào mảng T. Lặp lại cho đến khi mảng P rỗng  void hoanvi(dongho &a, dongho &b): hàm hoán vị hỗ trợ cho việc hoán vị các nghịch thế trong chương trình con Insertion Sort. 29 Bài thực hành Cấu trúc dữ liệu và giải thuật 2.2 Kiểm tra Hàm main test cho phần sắp xếp thông tin theo giá bằng Insertion Sort.3 Chạy kết quả 30 Bài thực hành Cấu trúc dữ liệu và giải thuật 2.10 Sắp xếp danh sách theo thời gian Bảo hành dùng Quick Sort 2.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Bài viết "Cấu Trúc Dữ Liệu và Giải Thuật: Tiểu Luận Đồ Án Môn Học" cung cấp cái nhìn sâu sắc về các khái niệm cơ bản và ứng dụng của cấu trúc dữ liệu và giải thuật trong lập trình. Tác giả phân tích tầm quan trọng của việc lựa chọn cấu trúc dữ liệu phù hợp để tối ưu hóa hiệu suất của chương trình, đồng thời giới thiệu các giải thuật phổ biến và cách chúng có thể giải quyết các bài toán thực tiễn. Độc giả sẽ nhận được những lợi ích thiết thực từ việc nắm vững kiến thức này, giúp cải thiện kỹ năng lập trình và khả năng giải quyết vấn đề.

Nếu bạn muốn mở rộng thêm kiến thức về các ứng dụng thực tiễn trong lĩnh vực công nghệ thông tin, hãy tham khảo bài viết Luận văn thạc sĩ khoa học máy tính xây dựng ứng dụng monocular full slam, nơi bạn sẽ tìm thấy thông tin về các ứng dụng thực tế của công nghệ trong việc xử lý hình ảnh. Ngoài ra, bài viết Luận văn tốt nghiệp khoa học máy tính xây dựng hệ thống quản lý khóa học dựa trên moodle framework sẽ giúp bạn hiểu rõ hơn về việc áp dụng cấu trúc dữ liệu trong việc phát triển hệ thống quản lý học tập. Cuối cùng, bài viết Luận văn tốt nghiệp khoa học máy tính hệ thống đánh giá luận văn tốt nghiệp cũng là một nguồn tài liệu quý giá để bạn khám phá thêm về các hệ thống đánh giá và phân tích dữ liệu.