1. Trang chủ
  2. » Luận Văn - Báo Cáo

đồ án môn học cấu trúc dữ liệu và giải thuật

54 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đ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 54
Dung lượng 8,77 MB

Nội dung

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 Ma

Trang 1

TRUONG DAI HOC TAI CHINH — MARKETING

CAU TRUC DU LIEU VA GIAI

THUAT

Giang vién : Nguyễn Quốc Thanh

Sinh viên thực hiện : Đễ Tường Vy

TPHCM - 12/2020

Trang 2

BỘ TÀI CHÍNH TRƯỜNG ĐẠI HỌC TAI CHINH — MARKETING

CAU TRUC DU LIEU VA GIAI

THUAT

Giang vién : Nguyễn Quốc Thanh

Sinh viên thực hiện : Đễ Tường Vy

TPHCM - 12/2020

2

Trang 3

Lờ

Lờ

Ch

Ch

Ch

MỤC LỤC

I®:0082s 1 4

Ie1u19 7 5

ii SIc ii .a 6

1.1 Gi Gthi GU nh ố 6

1.2 CââU †FÚC - - - Ă KH HH HH HH TH HT th kg 6 1.3 Dữ lỆ U mẫu c0 00000 HH n0 00 C08 55 8 c4 7 1.4 Cac CHUC in e 8

ngr?: Tìm kiêâm và säâp xêâp trên m ¿ng cââu †rÚC - - SH, 9 VĂN c0 3n áo e 9

VWÊ 080v 0ï (8 1n 11

2.3 Tìm kiêâm mã sản phẩm w ¡ Linearsearch và Binarysearch: - 13

2.4 Tìm thông tin DH theo hang s 4 xudat dùng Linearsearch và Binarysearch 16

2.5 Săâp xêâp danh sách theo Mã sản plá m dùng Shaker Sort 20

2.6 Săâp xêâp danh sách theo Mã sản plá m dùng Selection Sort 22

2.7 Sãâp xêâp danh sách theo Hãng s ủ xuâât dùng Interchange Sort 24

2.8 Sãâp xêâp danh sách theo Trọng trợ ng dùng Bubble Sort -«- 26

2.9 Sãâp xêâp danh sách theo Giá dùng Insertion Sort - cà SA x22 28 2.10 Sãâp xêâp danh sách theo thời gian Bị o hành dùng Quick Sort 30

ngr8: Tìm kiêâm và säâp xêâp trên danh sách liên kêât -c-Ằ<sẰ- 33 E20 095 33

3.2 Các thao tác cơ là n trên DSLÍ SH TH HH 34 3.3 Tìm kiêâm thông tin đôêng hôê theo mã sản phâm +5 55555: 39 3.4 Tìm thông tin ĐH theo tên hãng sả xuâât dùng Linear Search 42

3.5 Săâp xêâp danh sách theo mã sản phá m dùng Sharker Sort - 44

3.6 Săâp xêâp danh sách theo Mã sản plâ m dùng Selection Sort 44

3.7 Săâp xêâp danh sách theo Mã sản phá m dùng Interchange Sort 46

3.8 Sãâp xêâp danh sách theo Trọng trợ ng dùng Bubble Sort «-« 48

3.9 Sãâp xêâp danh sách theo thời gian Bi o hành dùng Insertion Sort 50

3.10 Sãâp xêâp danh sách theo thời gian li o hành dùng Quick Sort 52

Trang 5

Lời Cam Đoan Tôi xin cam đoan bài đồ án này là do chính tôi thực hiện cùng với sựu hô trợ từ giáo viên giảng dạy bộ môn hướng dân và các bạn bè trong nhóm học tập không đánh cắp do an của người khác làm của riêng cho mình và hướng quyền lợi trên công sức của người khác

Tôi xin chịu hoàn toàn trách nhiệm về lời cam đoan trên !

Sinh Viên

Đỗ Tường Wy

Trang 6

Lời Cảm Ơn

Lời nói đầu tiên em xin gửi lời cám ơn đến giáo viên trong toàn khoa CNTT của Trường Đại Học Tài chính Marketing nói chung và 2 giáo viên chuyên ngành giảng dạy bộ môn cấu trúc đữ liệu và giải thuật nói riêng Và em xin gửi lời cám ơn đặc biệt nhất đến Thầy Nguyễn Quốc Thanh giáo viên giảng dạy và hướng dẫn em thực hiện tốt bài đồ án lần này

Em xin trân trong cam on !

Sinh Vién

D6 Tuong Vy

Trang 7

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 tinh, .) (GioiTinh); Trọng lượng của đồng hỗ (TrongLuong); Thời gian bảo hành (tháng) (BaoHanh);

Gia ban (Gia)

1.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 Thong tin san pham dé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 đài LI 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 I 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 II 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)

Trang 8

- Gia : số thực dương (Gia>=0)

Định nghĩa cầu trúc đồng ho:

Trang 9

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 (đù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 (dung Linear Search )

- Tìm thông tin ĐH theo tén (dung 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)

Trang 10

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.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 al], int n) hỗ trợ nhập danh sách đồng hồ

10

Trang 12

//Nhập mảng tương ứng với số phần tử đã nhập ở trên

cout << "\nNhap vao thong tin san pham dong ho”; nhap_mang(arr, soft);

hang san xuat: Casio

gioi tinh: Nam

trong luong san pham (g): 70

thoi gian bao hanh (thang):

gia (trieu VND): 5

phan tu a[1]:

ma san pham: 1903

hang san xuat: Rolex

gioi tinh: Nam

trong luong san pham (g): 156

thoi gian bao hanh (thang): 24

Trang 13

+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 : voiđ xuat_mang (dongho a[].int n):hồ trợ xuất mảng sản phâm đồng

cout << a.BaoHanh << "(thang) \t";

ị cout << a.Gia << " (trieu) \t";

cout << "\nDanh sach cac san pham dong ho: ”; xuat_mang(arr, soft);

return 9;

}

2.2.3 Kết quả chạy

13

Trang 14

Danh sach cac san pham dong ho:

Danh sach thong tin cua cac san pham dong ho:

1901 Cas1o Nam 70(g) 60(thang) 5 (trieu)

1903 Rolex Nam 56(g) 24(thang) 100 (trieu) `

2.3 Tìm kiếm mã sản phẩm với Linearsearch và Binarysearch:

2.3.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:

O 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

else cout << "\nKhong tim thay";

O void BinarySearch(dongho al], int n): giai thuat tim kiém nhi phan, hé trợ tìm ra đồng hồ có mã so can tim

14

Trang 15

int mid = (right + left) / 2;

cout << "\nNhap ma san pham muon tim: ";

else left = mid + 1;

mid = (right + left) / 2;

Trang 16

//Nhập mảng tương ứng với số phần tử đã nhập ở trên

3 cout << "\nNhap vao thong tin san pham dong ho”;

//Nhập mảng tương ứng với số phần tử đã nhập ở trên

cout << "\nNhap vao thong tin san pham dong ho”; nhap_mang(arr, soft);

cout << "\nDanh sach cac san pham dong ho: "; xuat_mang(arr, soft);

Trang 17

Danh sach cac san pham dong ho:

Danh sach thong tin cua cac san pham dong ho:

Casio Nam 70(g) 60(thang)

Rolex Nam 156(g) 24(thang)

Nhap ma san pham muon tim:

Thong tin cua ma san pham 1993 la:1993 Rolex Nam 156(g) 24(thang)

test

2ham dong Danh sach thong tin cua cac s ho:

Nhap ma san pham muon tim: 1902

Khong tim thay

2.4 Tim thong tin DH theo hang san xuat dùng Linearsearch và Binarysearch

2.4.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:

O void LinearSearch_h(dongho al], int n): gidi thuật tìm kiếm tuyến tính, hỗ trợ tìm

ra dong ho có hãng sản xuat can tim

17

Trang 18

//Tìm kiêm LS theo hãng sản xuât

void LinearSearch_h(dongho a[], int n)

else cout << "\nKhong tim thay";

4 void BinarySearch h(dongho al], 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 xuat can tim

18

Trang 19

//Tìm kiếm BS theo hãng sản xuất

int BinarySearch_h(dongho a[], int n)

{

char x[13];

int left = 0;

int right =n - 1;

int mid = (right + left) / 2;

cout << "\nNhap hang san xuat muon tim: ";

else left = mid + 1;

mid = (right + left) / 2;

Trang 20

int main()

//Khai báo mảng số nguyên 100 phần tử

: dongho arr[ 298];

int soft =

//Nhập mảng tương ứng với số phần tử đã nhập ở trên

cout << "\nNhap vao thong tin san pham dong ho”;

Trang 21

Danh sach cac san pham dong ho

ach thong tin cua cac s

Omega Trungtinh

Nhap hang san xuat muon tim: Omega

Thong tin dong ho cua hang san xuat 0mega la:196 Omega Trungtinh 55(g) 12(thang)

1 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

sach thong tin cua cac

rl

12(thang

Nhap hang sar

Khe > tim thay

2.5 Sắp xếp danh sách theo Mã sản pham ding Shaker Sort

2.5.1 Chương trình con

Z1 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 vi 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:

Z1 Lượt đi: đây phần tử bé nhất về đầu dãy

7l Lượt về: đây phân tử lớn nhất về cuối dãy

O void swap(dongho &a, dongho &b): ham hoan vi hé tro cho phan sap xép trong chương trình con

21

Trang 22

//CTC ShakerSort sap xép theo ma sp

void SharkerSort(dongho a[], int n)

for (int: i = right; i > left; <i )

1f (strcmp(a[i].MaSP, a[i - 1].MaSP) < 9)

Trang 23

int main()

//Khai báo mảng số nguyén 10@ phan tu

dongho arr[100@];

int soft = 4;

//Nhập mảng tương ứng với số phần tử đã nhập ở trên

cout << "\nNhap vao thong tin san pham dong ho”;

cac san pham dong

Danh sach thong tin cua cac san pham dong ho:

Casio Nam 79(g) 69( thang) 5 (trieu)

TaghHeuer Nam 156(g) 24(thang) 34 (trieu) Rolex Nam 156(g) 24(thang) 199 (trieu)

Omega TrungTinh 55(g) 12(thang) 23 (trieu) Danh sach dong ho sau khi sap xep la:

Danh sach thong tin cua cac san pham dong ho:

TaghHeuer Nam 156(g) 24(thang) 34 (trieu) Rolex Nam 156(g) 24(thang) 199 (trieu)

Omega TrungTinh 55(g) 12(thang) 23 (trieu) Casio Nam 79(g) 66(thang) 5 (trieu)

2.6 Sắp xếp danh sách theo Mã sản pham ding Selection Sort

2.6.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:

L¡ void SelectionSort(dongho arr[], 1nt 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

L¡ void hoanvi(dongho &a, dongho &b): ham hoan vi hỗ trợ việc hoán vị các phần tử trong chương trình con SelectionSort

23

Trang 24

dongho arr[1@] = { {”1919”, "Casio”, "Nam” , 79,69, 5},

{”1991”, "Tag Heuer”" ; "Nam", 169; 23, 34},

Trang 25

san pham dong B

Danh sach thong tin cua cac san pham dong ho:

Tissot Trung tinh ( 12(thang)

Timex Irung tỉnh ) 12(thang)

inKlein 90(g) 24(thang)

( hang) 12 (trie (thang) 2.5 (trieu) Danh sach dong ho sau khi sap xep theo ma san pham bang SelectionSort la: Danh sach thong tin cua cac san pham dong ho:

1901 Tag Heuer Nam (g) 23(

Irung tĩnh

Trung tình

Trung tinh (

Nu ) 12(thang) CalvinKlein Nu 24(thang)

Citize ầm 150(g) )

Casio lam 70(g) ) (trieu)

2.7 Sap xép danh sach theo Hang san xuat dung Interchange Sort 2.7.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:

1 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 tir ké tiếp cho đến khi mảng được sắp xếp

O void hoanvi(Bangdiem &a, Bangdiem &b): thuat toan hoan vị hỗ trợ hoán vị các phần tử nghịch thế trong chương trình con Interchange Sort

25

Trang 26

void InterchangeSort(dongho a| |, int n)

for (int i = 0; i <n; i++)

dongho arr[10] = { {"1910","Casio","Nam",70,60,5},

{"1901","Tag Heuer", "Nam",160, 23,34},

Trang 27

y tin cua cac san pham

Trung tinh 55( 2(thang) 3 (trieu)

Trung tinh (g) P an 2 (trieu)

(trieu)

3 (trieu) (trieu)

2.8 Sap xép danh sách theo Trọng lượng dùng Bubble Sort 2.8.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[] mt 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

O void hoanvi(dongho &a, dongho &b): ham hoan vi hé tro cho viée hoan vi cac nghich thé trong chuong trinh con Bubble Sort

//CTC sắp xếp danh sách theo trọng lượng bằng Bubble Sort

void BubbleSort(dongho a[], int n)

Ngày đăng: 02/07/2024, 16:26

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

TÀI LIỆU LIÊN QUAN

w