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

BÁO CÁO ĐỒ ÁN HỌC PHẦN 1 KÈM SOURCECODE - XÂY DỰNG CHƯƠNG TRÌNH MÔ PHỎNG THUẬT TOÁN SẮP XẾP NỔI BỌT, SẮP XẾP TRỘN, SẮP XẾP VUN ĐỐNG, SẮP XẾP NHANH

34 2K 45

Đ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 34
Dung lượng 539,04 KB
File đính kèm Source.rar (211 KB)

Nội dung

Tên đề tài: Xây dựng chương trình mô phỏng thuật toán sắp xếp nổi bọt, sắp xếp trộn, sắp xếp vun đống,sắp xếp nhanh. Yêu cầu: 1. Yêu cầu về kiến thức, kỹ năng: - Hiểu và viết được các giải thuật sắp xếp bằng phương pháp sắp xếp nổi bọt, sắp xếp trộn, sắp xếp vun đống, sắp xếp nhanh - Sử dụng được bộ công cụ phát triển Visual Studio 2005/2008/2010; - Biết lập trình bằng ngôn ngữ lập trình VB.NET/C# 2.Yêu cầu về sản phẩm, chương trình: - Chương trình viết băng ngôn ngữ VB.NETC; - Xây dựng được Form cho phép nhập vào dãy số có n số nguyên (Dùng mảng); - Sử dụng ComboBox để lựa chọn các phương pháp sắp xếp; - Quá trình sắp xếp được hiển thị trên một ListBox (Hiện thị từng bước sắp xếp).

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP VIỆT – HUNG

KHOA: CÔNG NGHỆ THÔNG TIN

NGUYỄN VĂN HƯỞNG

XÂY DỰNG CHƯƠNG TRÌNH

MÔ PHỎNG THUẬT TOÁN

SẮP XẾP NỔI BỌT, SẮP XẾP TRỘN, SẮP XẾP VUN ĐỐNG,

SẮP XẾP NHANH

ĐỒ ÁN HỌC PHẦN 1 CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN

HÀ NỘI, NĂM 2017

Trang 2

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP VIỆT – HUNG

KHOA: CÔNG NGHỆ THÔNG TIN

XÂY DỰNG CHƯƠNG TRÌNH

MÔ PHỎNG THUẬT TOÁN

SẮP XẾP NỔI BỌT, SẮP XẾP TRỘN, SẮP XẾP VUN ĐỐNG,

SẮP XẾP NHANH

ĐỒ ÁN HỌC PHẦN 1 CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN

Giáo viên hướng dẫn : Ngô Thị Lan

Họ tên sinh viên : Nguyễn Văn Hưởng

Mã sinh viên : 1501076

HÀ NỘI, NĂM 2017

Trang 3

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP VIỆT-HUNG

KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN HỌC PHẦN 1

Chuyên ngành: Công nghệ thông tin

Hệ đào tạo: Cao đẳng, Đại học

Đề tài số: 57

Tên đề tài: Xây dựng chương trình mô phỏng thuật toán sắp xếp nổi bọt, sắp xếp trộn, sắp xếp vun đống,sắp xếp nhanh.

Yêu cầu:

1 Yêu cầu về kiến thức, kỹ năng:

- Hiểu và viết được các giải thuật sắp xếp bằng phương pháp sắp xếp nổi bọt, sắp xếptrộn, sắp xếp vun đống, sắp xếp nhanh

- Sử dụng được bộ công cụ phát triển Visual Studio 2005/2008/2010;

- Biết lập trình bằng ngôn ngữ lập trình VB.NET/C#

2 Yêu cầu về sản phẩm, chương trình:

- Chương trình viết băng ngôn ngữ VB.NET/C#;

- Xây dựng được Form cho phép nhập vào dãy số có n số nguyên (Dùng mảng);

- Sử dụng ComboBox để lựa chọn các phương pháp sắp xếp;

- Quá trình sắp xếp được hiển thị trên một ListBox (Hiện thị từng bước sắp xếp)

3 Nộp kết quả

- Báo cáo (theo mẫu của bộ môn)

- Các công cụ phát triển, chương trình, file báo cáo

4 Các yêu cầu khác:

- Gửi lịch làm việc theo tuần cho giáo viên hướng dẫn

- Mỗi tuần phải liên hệ với giáo viên hướng dẫn ít nhất 2 lần qua email, hoặc gặp trực tiếp

Số lượng sinh viên tham gia tối đa: 1

Thời gian thực hiện: Theo lịch của bộ môn

Tài liệu tham khảo: [1] Giáo trình do giáo viên cung cấp

[2] Internet

Ngô Thị Lan

ĐT: 0982.010.510Email: onebit.lannt@gmail.com

Trang 4

TRƯỜNG ĐHCN VIỆT – HUNG

KHOA:……….

CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do – Hạnh phúc NHẬN XÉT ĐỒ ÁN HỌC PHẦN 1 Chuyên ngành : ………

(Nhận xét của GV hướng dẫn Nhận xét của GV phản biện )

Họ tên sinh viên: ……….………

Tên đề tài: ……… ………

………

Người nhận xét (Họ tên, học hàm, học vị): ………

Đơn vị công tác (Nếu có): ……… ………

Ý KIẾN NHẬN XÉT 1 Về nội dung & đánh giá thực hiện nhiệm vụ nghiên cứu của đề tài: ………

………

………

2 Về phương pháp nghiên cứu, độ tin cậy của các số liệu: ………

………

………

3 Về kết quả của đề tài: ………

………

………

4 Những thiếu sót và vấn đề cần làm rõ (Nếu có): ………

………

………

5 Ý kiến kết luận (Mức độ đáp ứng yêu cầu đối với đồ án học phần 1) ………

………

………

6 Câu hỏi người nhận xét dành cho học viên (Nếu có): ………

………

………

………

Mẫu DA02

Trang 6

LỜI NÓI ĐẦU

Hiện nay trong hầu hết các hệ lưu trữ, quản lý dữ liệu, thao tác tìm kiếm thườngđược thực hiện nhiều nhất để khai thác thông tin một cách nhanh chóng (ví dụ như : tracứu từ điển, tìm sách trong thư viện ) và muốn việc tìm kiếm cách nhanh chóng thì dữliệu cần phải được sắp xếp sẵn, ngăn nắp theo một trật tự, hệ thống nhất định sẽ cho phépchúng ta tìm kiếm nhanh, sắp xếp có ý nghĩa rất lớn trong việc quản lí và lưu trữ

Do đó khi xây dựng một hệ quản lý thông tin trên máy tính, bên cạnh các thuậttoán tìm kiếm, các thuật toán sắp xếp dữ liệu cũng là một trong những chủ đề được quantâm hàng đầu

Hiện nay đã có nhiều giải thuật tìm kiếm và sắp xếp được xây dựng, mức độ hiệuquả của từng giải thuật còn phụ thuộc vào tính chất của cấu trúc dữ liệu cụ thể mà nó tácđộng đến mà ta lựa chọn phương pháp sắp xếp sao cho phù hợp Trong khoa học máy tính

và trong toán học, một thuật toán sắp xếp là một thuật toán sắp xếp các phần tử của mộtdanh sách (hoặc một mảng theo thứ tự tăng dần hoặc giảm dần) Người ta thường xéttrường hợp các phần tử cần sắp xếp là các số Hầu hết các bài toán đều có nhiều thuật toánkhác nhau để giải quyết chúng

Nội dung giới thiệu trình bày dưới đây là những thuật toán sắp xếp thông dụngnhất và đó cũng là nội dung mà em nghiên cứu trong đề tài này là:

Ngoài ra còn có nhiều thuật toán sắp xếp khác nữa như: Phương pháp sắp xếp cải tiến(Shellsort), sắp xếp đếm phân phối (distribution counting) Trong đề tài này chúng ta sẽđược lần lượt tìm hiểu khảo sát từng thuật toán trên Thuật toán Bubble sort là một trongnhững thuật toán đơn giản dễ cài đặt nhưng chi phí cao Các thuật toán Merge sort, Heapsort , Quick sort phức tạp hơn nhưng hiệu suất cao hơn Bubble Sort Các thuật toán trênđều có một điểm chung là đều được xây dựng dựa trên cơ sở so sánh giá trị của các phần

tử trong mảng (hay so sánh các khóa tìm kiếm) Khi xây dựng một thuật toán sắp xếp cầnchú ý tìm cách giảm thiểu những phép so sánh và đổi chổ không cần thiết để tăng hiệuquả của thuật toán

Mặt dù em đã rất cố gắng và nổ lực để làm đề tài này do kinh nghiệm còn hạn chế

và kiến thức em nắm chưa sâu nên em biết sẽ không tránh khỏi những thiếu sót Em rấtmong nhận được sự thông cảm và đóng góp của các Thầy, Cô để lần sau làm được tốthơn

Hoàn thành đề tài này là niềm vui lớn nên em rất là biết ơn cô Ngô Thị Lan đãhướng dẫn em tận tình trong suốt thời gian em làm bài Một lần nữa em xin gửi lời cám

ơn chân thành nhất đến cô

Sinh viên thực hiện:

Trang 7

Nguyễn Văn Hưởng

Trang 8

NHẬT KÝ THỰC HIỆN ĐỀ TÀI

Trang 9

MỤC LỤC

LỜI NÓI ĐẦU i

MỤC LỤC i

MỞ ĐẦU 1

I Đặt vấn đề 1

II Mục tiêu nghiên cứu của đề tài 1

III Nhiệm vụ của đề tài 1

IV Kết quả đạt được của đề tài 1

V Bố cục của đề tài 2

CHƯƠNG 1 TÌM HIỂU VỀ THUẬT TOÁN VÀ SẮP XẾP 3

1.1 Thuật toán (giải thuật) – Algorithm 3

1.1.1 Định nghĩa thuật toán 3

1.1.2 Đặc trưng của thuật toán 4

1.1.3 Biểu diễn thuật toán 4

1.1.3.1 Mô tả các bước thực hiện 4

1.1.3.2 Sử dụng sơ đồ (lưu đồ) giải thuật (flowchart) 5

1.1.4 Độ phức tạp thuật toán - Algorithm Complexity 6

1.1.4.1 Các tiêu chí đánh giá thuật toán 6

1.2 Khái niệm về sắp xếp 7

1.3 Khái niệm nghịch thế 7

1.4 Các tiêu chuẩn đánh giá một thuật toán sắp xếp 8

CHƯƠNG 2 NỘI DUNG CỦA CÁC PHƯƠNG PHÁP SẮP XẾP 9

2.1 Phương pháp sắp xếp nổi bọt (Bubble sort) 9

2.1.1 Giải thuật 9

2.1.2 Đánh giá giải thuật 9

2.1.3 Ví dụ 10

2.2 Phương pháp sắp xếp trộn (Merge Sort) 11

2.2.1 Nguyên tắc sắp xếp bằng phép trộn 11

Trang 10

2.2.2 Giải thuật 11

2.2.3 Đánh giá giải thuật 12

2.2.4 Ví dụ 12

2.3 Phương pháp sắp xếp vun đống (Heap Sort) 13

2.3.1 Định nghĩa Heap 13

2.3.2 Giải thuật 14

2.3.3 Đánh giá giải thuật 14

2.3.4 Ví dụ 14

2.4 Phương pháp sắp xếp nhanh (Quick Sort) 16

2.4.1 Giải thuật 16

2.4.2 Đánh giá giải thuật 17

2.4.3 Ví dụ 18

CHƯƠNG 3 CHƯƠNG TRÌNH DEMO 19

3.1 Microsoft Visual Studio 2010 19

3.2 Tại sao sử dụng Windows Forms 19

3.3 Chương trình demo 20

3.4 Kết luận 22

3.4.1 Kết quả đạt được 22

3.4.2 Hạn chế 23

TÀI LIỆU THAM KHẢO 24

Trang 11

Bài toán sắp xếp thường được xuất hiện thường xuyên nhất trong các ứng dụng tinhọc như trong ngôn ngữ lập trình C#,C++,Pascal ,với những yêu cầu, mục đích khácnhau thì sắp xếp dữ liệu lưu trữ trong máy tính theo cách và các bước khác nhau….Nóichung, dữ liệu có thể xuất hiện dưới nhiều dạng khác nhau và thường phải lưu trữ mộtkhối lượng dữ liệu đáng kể, nên việc xây dựng các giải thuật sắp xếp sẽ cho phép tìmkiếm nhanh sẽ có ý nghĩa rất lớn.

II Mục tiêu nghiên cứu của đề tài

Từ các vấn đề nêu trên giúp cho em hiểu rõ mục đích đề tài là để sắp xếp các dãy

số theo một trật tự, thứ tự tăng dần (hoặc là giảm dần) tùy theo vào yêu cầu của ngườimuốn sắp xếp, sắp xếp theo thự tự để giúp cho việc tìm kiếm được dễ dàng hơn, qua đó cóthể giúp hiểu rõ các ưu khuyết điểm của các phương pháp sắp xếp để so sánh tốc độ sắpxếp, từ đó để vận dụng các phương pháp đó trong việc sắp xếp theo yêu cầu cùa bài toánđặt ra một cách có hiệu quả

III Nhiệm vụ của đề tài

Tìm hiểu và vận dụng các lý thuyết cơ bản về một số phương pháp sắp xếp nhưphương pháp sắp xếp nổi bọt (Bubblesort) , sắp xếp trộn (Mergesort),, sắp xếp kiểu vunđống (Heapsort), sắp xếp nhanh (Quicksort) để cài đặt chương trình Demo, cho phép sắpxếp một dãy số đã cho tuỳ ý thành một dãy số có thứ tự theo các thuật toán sắp xếp vừanêu trên và hiển thị từng bước sắp xếp

IV Kết quả đạt được của đề tài

Hoàn tất tất cả các mục của phần mềm bao gồm:

+ Xây dựng được Form cho phép nhập vào dãy số có n số nguyên (dùng mảng)

+ Sử dụng ComboBox để lựa chọn các phương pháp sắp xếp

+ Quá trình sắp xếp được hiển thị trên một ListBox (Hiện thị từng bước sắp xếp)

Trang 12

V Bố cục của đề tài

Đề tài gồm 3 chương như sau:

CHƯƠNG 1 : TÌM HIỂU VỀ THUẬT TOÁN VÀ SẮP XẾP CHƯƠNG 2 : NỘI DUNG CỦA CÁC PHƯƠNG PHÁP SẮP XẾP CHƯƠNG 3 : CHƯƠNG TRÌNH DEMO

Trang 13

CHƯƠNG 1 TÌM HIỂU VỀ THUẬT TOÁN VÀ SẮP XẾP

Thuật toán, còn gọi là giải thuật, là một tập hợp hữu hạn của các chỉ thị hayphương cách được định nghĩa rõ ràng cho việc hoàn tất một số sự việc từ một trạng tháiban đầu cho trước; khi các chỉ thị này được áp dụng triệt để thì sẽ dẫn đến kết quả saucùng như đã dự đoán trước Nói cách khác, thuật toán là một bộ các quy tắc hay quy trình

cụ thể nhằm giải quyết một vấn đề trong một số bước hữu hạn, hoặc nhằm cung cấp mộtkết quả từ một tập hợp của các dữ kiện đưa vào

Sắp xếp là một quá trình biến đổi một danh sách các đối tượng thành một danhsách thoả mãn một thứ tự xác định nào đó Sắp xếp đóng vai trò quan trọng trong tìmkiếm dữ liệu Chẳng hạn, nếu danh sách đã được sắp xếp theo thứ tự tăng dần (hoặc giảmdần), ta có thể sử dụng kỹ thuật tìm kiếm nhị phân hiệu quả hơn nhiều tìm kiếm tuần tự…

Trong thiết kế thuật toán, ta cũng thường xuyên cần đến sắp xếp, nhiều thuật toán được

thiết kế dựa trên ý tưởng xử lý các đối tượng theo một thứ tự xác định Các thuật toán sắpxếp được chia làm 2 loại: sắp xếp trong và sắp xếp ngoài Sắp xếp trong được thực hiệnkhi mà các đối tượng cần sắp xếp được lưu ở bộ nhớ trong của máy tính dưới dạng mảng

Do đó sắp xếp trong còn được gọi là sắp xếp mảng Khi các đối tượng cần sắp xếp quálớn cần lưu ở bộ nhớ ngoài dưới dạng file, ta cần sử dụng các phương pháp sắp xếp ngoài,hay còn gọi là sắp xếp file

1.1 Thuật toán (giải thuật) – Algorithm

1.1.1 Định nghĩa thuật toán

Thuật ngữ “algorithm” (thuật toán hoặc còn gọi là giải thuật) được gọi theo tên nhàtoán học Ả rập thế kỷ IX al-Khowarizmi, người đã viết cuốn sách về các chữ số Hindu –

cơ sở của kí hiệu số thập phân hiện đại (xem [4], trang 118) Xuất xứ ban đầu là từalgorism, được dùng để chỉ các quy tắc thực hiện các phép tính số học trên các số thậpphân Sau đó, vào thế kỷ XVIII algorism biến thành algorithm Với sự quan tâm ngàycàng tăng đối với máy tính, khái niệm thuật toán đã được cho một ý nghĩa chung hơn, baohàm cả các thủ tục xác định để giải các bài toán, chứ không phải chỉ là thủ tục để thựchiện các phép tính số học

Thuật toán là một dãy hữu hạn các thao tác được sắp xếp theo một trình tự xácđịnh sao cho sau khi thực hiện dãy các thao tác ấy, từ Input của bài toán ta nhận đượcOutput cần tìm

Cũng có thể xem thuật toán như một công cụ để giải quyết một bài toán cụ thể.Phát biểu bài toán sẽ chỉ định tổng quát mối quan hệ Input/Output cần thiết Thuật toán

mô tả một thủ tục tính toán cụ thể để đạt được mối quan hệ Input/Output đó

Trang 14

Vào khoảng những năm 1930 - 1936, lần lượt các nhà toán học K.Gödel, S.Kleene, A Church, A Turing đã đề ra một số định nghĩa khác nhau cho khái niệm thuậttoán Trong số các định nghĩa toán học khác nhau (nhưng tương đương) về thuật toán, cáckhái niệm Máy Turing (1937) và Hàm đệ quy (1931-1936) được sử dụng rộng rãi hơn vì

có nhiều thuận tiện cho các nghiên cứu cả về lí thuyết lẫn thực hành

1.1.2 Đặc trưng của thuật toán

Tính đúng đắn: Thuật toán cần phải đảm báo cho một kết quả đúng sau khi thực

hiện đói với các bộ dữ liệu đầu vào Đây có thể nói là đặc trưng quan trọng nhất đối vớimột thuật toán

Tính dừng: thuật toán cần phải đảm bảo sẽ dừng sau một số hữu hạn bước.

Tính xác định: Các bước của thuật toán phải được phát biểu rõ ràng, cụ thể, tránh

gây nhập nhằng hoặc nhầm lẫn đối với người đọc và hiểu, cài đặt thuật toán

Tính hiệu quả: thuật toán được xem là hiệu quả nếu như nó có khả năng giải quyết

hiệu quả bài toán đặt ra trong thời gian hoặc các điều kiện cho phép trên thực tế đáp ứngđược yêu cầu của người dùng

Tính phổ quát: thuật toán được gọi là có tính phổ quát( phổ biến) nếu nó có thể giải

quyết được một lớp các bài toán tương tự

Ngoài ra mỗi thuật toán theo định nghĩa đều nhận các giá trị đầu vào được gọichung là các giá trị dữ liệu Input Kết quả của thuật toán( thường là một kết quả cụ thểnào đó tùy theo các bài toán cụ thể) được gọi là Output

1.1.3 Biểu diễn thuật toán

Thường có hai cách biểu diễn một thuật toán, cách thứ nhất là mô tả các bước thựchiện của thuật toán, cách thứ hai là sử dụng sơ đồ giải thuật

1.1.3.1 Mô tả các bước thực hiện

Để biểu diễn thuật toán người ta mô tả chính xác các bước thực hiện của thuậttoán, ngôn ngữ dùng để mô tả thuật toán có thể là ngôn ngữ tự nhiên hoặc một ngôn ngữlai ghép giữa ngôn ngữ tự nhiên với một ngôn ngữ lập trình nào đó gọi là các đoạn giả mãlệnh

Ví dụ: mô tả thuật toán tìm ước số chung lớn nhất của hai số nguyên.

Input: Hai số nguyên a, b

Output: Ước số chung lớn nhất của a, b

Thuật toán:

Bước 1: Nếu a=b thì USCLN(a, b)=a

Trang 15

1.1.3.2 Sử dụng sơ đồ (lưu đồ) giải thuật (flowchart)

Một trong những cách phổ biến để biểu diễn thuật toán là sử dụng sơ đồ thuật toán (Algorithm Flowchart)

Sơ đồ thuật toán sử dụng các ký hiệu hình khối cơ bản để tạo thành một mô tả mang tính hình thức (cách này rõ ràng hơn so với việc mô tả các bước thực hiện thuật toán) của thuật toán Chúng ta có thể hình dung việc sử dụng sơ đồ giải thuật để mô tả thuật toán giống như dùng các bản vẽ để mô tả cấu trúc của các tòa nhà

Các khối cơ bản của một sơ đồ thuật toán:

Hình 1.1.3.2 Các khối cơ bản của một sơ đồ thuật toán.

Khối 1 : Khối bắt đầu thuật toán, chỉ có duy nhất một đường ra ;

Khối 2 : Khối kết thúc thuật toán, có thể có nhiều đường vào;

Khối 3 : Thực hiện câu lệnh (có thể là một hoặc nhiều câu lệnh) ; gồm một đườngvào và một đường ra

Khối 4: Rẽ nhánh, kiểm tra biểu thức điều kiện (biểu thức Boolean), nếu biểu thứcđúng thuật toán sẽ đi theo nhánh Đúng (True), nếu biểu thức sai thuật toán sẽ đi theonhánh Sai (False). 

Khối 5 : Các câu lệnh nhập và xuất dữ liệu

Trang 16

1.1.4 Độ phức tạp thuật toán - Algorithm Complexity

Thông thường để đánh giá mức độ tốt, xấu và so sánh các thuật toán cùng loại, có thể dựa trên hai tiêu chuẩn:

+ Thuật toán đơn gàn, dễ hiểu, dễ cài đặt

+ Dựa vào thời gian thực hiện và tài nguyên mà thuật toán sử dụng để thực hiện trên các bộ dữ liệu

Trên thực tế các thuật toán hiệu quả thì không dễ hiểu, các cài đặt hiệu quả cũng không dễ dàng thực hiện và hiểu được một cách nhanh chóng Và một điều có vẻ nghịch

lý là các thuật toán càng hiệu quà thì càng khó hiểu, cài đặt càng phức tạp lại càng hiệu quả (không phải lúc nào cũng đúng) Vì thế để đánh giá và so sánh các thuật toán người tathường dựa trên độ phức tạp về thời gian thực hiện của thuật toán, gọi là độ phức tạp thuật

toán (algorithm complexity) Về bản chất độ phức tạp thuật toán là một hàm ước lượng

(có thể không chính xác) số phép tính mà thuật toán cần thực hiện (từ đó dễ dàng suy ra thời gian thực hiện của thuật toán đối với một bộ dữ liệu input có kích thước N N có thể

là số phần tử của mảng trong trường hợp bài toán sắp xếp hoặc tìm kiếm, hoặc có thể là

độ lớn của số trong bài toán kiểm tra số nguyên tố chẳng hạn

1.1.4.1 Các tiêu chí đánh giá thuật toán

Khi xem xét đến độ phức tạp tính toán của thuật toán ta phải xem xét đến độ phức

tạp thời gian và độ phức tạp không gian.

Độ phức tạp không gian gắn liền với cấu trúc dữ liệu cụ thể được dùng để thực

hiện thuật toán

Độ phức tạp thời gian: Độ phức tạp thời gian của một thuật toán có thể biểu diễn

qua số phép toán thực hiện thuật toán đó khi các giá trị đầu vào có kích thước xác định

Độ phức tạp trong trường hợp xấu nhất là trường hợp phải dùng tối đa các phéptoán để giải bài toán theo thuật toán đang xét

Độ phức tạp trong trường hợp trung bình, trong trường hợp này ta phải đi tìm sốtrung bình các phép toán để giải bài toán trên toàn bộ các giá trị đầu vào có kích thước đãcho

Các thuật ngữ thường dùng cho độ phức tạp của thuật toán:

Trang 17

O(n!) Độ phức tạp giai thừa

Bảng 1.1.4.2 Các thuật ngữ thường dùng cho độ phức tạp của thuật toán

1.2 Khái niệm về sắp xếp

Sắp xếp được xem là một trong những lĩnh vực nghiên cứu cổ điển của khoa họcmáy tính Trước khi đi vào các thuật toán chi tiết chúng ta cần nắm vững một số kháiniệm cơ bản sau:

thoại của một người

Sắp xếp (sorting) là một quá trình xếp đặt các bản ghi của một file theo một thứ tựnào đó Việc xếp đặt này được thực hiện dựa trên một hay nhiều trường nào đó, và cácthông tin này được gọi là khóa xắp xếp (key) Thứ tự của các bản ghi được xác định dựatrên các khóa khác nhau và việc sắp xếp đối được thực hiện đối với mỗi khóa theo các thứ

tự khác nhau Chúng ta sẽ tập trung vào các thuật toán xắp xếp và giả sử khóa chỉ gồm 1trường duy nhất Hầu hết các thuật toán xắp xếp được gọi là các thuật toán xắp xếp sosánh: chúng sử dụng hai thao tác cơ bản là so sánh và đổi chỗ (swap) các phần tử cần sắpxếp

Các bài toán sắp xếp đơn giản được chia làm hai dạng:

Sắp xếp trong (internal sorting): Dữ liệu cần sắp xếp được lưu đầy đủ trong bộ nhớ trong

để thực hiện thuật toán sắp xếp

Sắp xếp ngoài (external sorting): Dữ liệu cần sắp xếp có kích thước quá lớn và không thểlưu vào bộ nhớ trong để sắp xếp, các thao tác truy cập dữ liệu cũng mất nhiều thời gianhơn

Khi khảo sát bài toán sắp xếp, ta sẽ phải làm việc nhiều với một khái niệm gọi là nghịchthế

1.3 Khái niệm nghịch thế

Xét một mảng các số a0,a1, …, an Nếu có i < j và ai > aj, thì ta gọi đó là một nghịch thế

Ví dụ : Mảng chưa sắp xếp sẽ có nghịch thế

đến a1, a2

Ngày đăng: 03/01/2018, 22:07

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w