Thuật toán sắp xếp là một thuật toán được sử dụng phổ biến trong khoa học máy tính và trong toán học, là một thuật toán dùng để sắp xếp các phần tử của một danh sách hoặc một mảng theo
Trang 1ĐỒ ÁN CƠ SỞ
T ÌM HIỂU VỀ THUẬT TOÁN SẮP XẾP
Chuyên ngành: KHOA HỌC DỮ LIỆU
Giảng viên hướng dẫn : Nguyễn Thị Hải Bình Sinh viên thực hiện : Nhóm 7
Lớp:22DKHA1 MSSV: 2286400039 Chu Quốc Trung
2286400024 Mai Thành Phúc
2286400021 Hoàng Thị Yến Nhi
2286400029 Hồ Gia Thành
2286400020 Trần Lê Phong Nhã
`TP Hồ Chí Minh, 2022
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM
Trang 2MỤC LỤC
Lời cam đoan
Mục lục……… 2
Chương 1 GIỚI THIỆU VỀ THUẬT TOÁN SẮP XẾP……….3
Chương 2 NHỮNG THUẬT TOÁN SẮP XẾP PHỔ BIẾN……… 4
2.1 Bubble Sort……… 4
2.2 Selection Sort……… ……….5
2.3 Insertion Sort……… ……….6
2.4 Merge Sort……… ……….7
2.5 Heap Sort…… ……… ……… …8
2.6 Quick Sort……….……9
Chương 3 SO SÁNH TỐC ĐỘ CÁC THUẬT TOÁN……… 10
Chương 4 KẾT QUẢ THỰC NGHIỆM……….12
Chương 5 KẾT LUẬN………12
Tài liệu tham khảo……….12
Trang 3CHƯƠNG 1
GIỚI THIỆU VỀ THUẬT TOÁN SẮP XẾP
1 Thuât toán sắp xếp là gì?
Thuật toán sắp xếp là một thuật toán được sử dụng phổ biến trong khoa học máy tính và trong toán học, là một thuật toán dùng để sắp xếp các phần tử của một danh sách ( hoặc một mảng ) theo thứ tự ( tăng hoặc giảm ) theo ý người sử dụng, người ta thường xét trường hợp các phần tử cần sắp xếp là các số
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 tin học như trong ngôn ngữ lập trình Pascal…, với những yêu cầu, mục dích khác nhau 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ói chung, 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ột khố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ìm kiếm nhanh Từ các vấn đề nêu trên giúp ta hiểu rõ mục đích của thuật toán sắp xếp:
Để sắp xếp các dãy số theo một trật tự, thứ tự tăng hoặc giảm tùy theo yêu cầu của người sử dụng
2 Phạm vi nghiên cứu của đề tài :
Vận dụng các lý thuyết cơ bản về các phương pháp sắp xếp như phương pháp chọn trực tiếp ( Selectsort ), chèn trực tiếp ( Insertsort ), sắp xếp nổi bọt ( Bubblesort ), sắp xếp kiểu vun đống ( Heapsort ), sắp xếp nhanh ( Quicksort ) ắp xếp trộn, s ( Mergesort)
Để cài đặt và sắp xếp dãy số đã cho thành một dãy số có thứ tự theo các thuật toán sắp xếp vừa nêu trên
*
* *
Trang 4CHƯƠNG 2
NHỮNG THUẬT TOÁN PHỔ BIẾN
2.1 Bubble sort ( sắp xếp nổi bọt ):
Là thuật toán sắp xếp thông qua một danh sách, lặp lại và so sánh các phần tử theo cặp
và hoán đổi chúng cho đến khi các phần tử lớn hơn “ nổi bong bóng “ đến cuối danh sách và các phần tử nhỏ hơn nằm ở “ dưới cùng “
Chúng ta so sánh hai nhân tố đầu tiên của danh sách Nếu phần tử đầu lớn hơn phần tử thứ hai thì chúng ta hoán đổi chúng Nếu chúng đã theo thứ tự thì chúng ta giữ nguyên nó Sau đó tiếp tục với cặp phần tử tiếp theo, quá trình này tiếp tục đến cặp cuối cùng trong danh sách
Ví dụ về thuật toán sắp xếp Bubble Sort (Nguồn: https://viblo.asia/p/thuat-toan-sap-xep-noi-bot-bubble-sort-m68Z0exQlkG)
Trang 52.2 Selection Sort ( Sắp xếp chọn ):
Sắp xếp chọn là một giải thuật đơn giản Giải thuật này là giải thuật dựa trên việc so sánh in-place, danh sách sẽ được chia thành hai phần, phần sắp xếp ở bên trái và phần chưa được sắp xếp ở bên phải Từ đầu phần chưa được sắp xếp là toàn bộ danh sách còn phần được sắp xếp là trống
Phần tử nhỏ nhất được lựa chọn từ mảng chưa được sắp xếp và được tráo đổi với phần bên trái nhất và phần tử đó trở thành phần tử của mảng được sắp xếp Tiến trình này tiếp tục cho tới khi toàn bộ từng phần tử trong mảng chưa được sắp xếp đều được di chuyển sang mảng đã được sắp xếp
Các bước thực hiện thuật toán sắp xếp chọn
Trang 62.3 Insertion Sort ( sắp xếp chèn ):
Là thuật toán sắp xếp bắt mô phỏng lại cách sắp xếp quân bài cảu những người chơi bài.Muốn sắp một bộ bài theo trật tự người chơi phải rút lần lượt từ quân thứ 2, so với các quân đứng trước nó để chèn vào vị trí thích hợp
Với cấu trúc dữ liệu mảng, chúng ta tưởng tượng là: mảng gồm hai phần: một danh sách con đã được sắp xếp và phần khác là các phần tử không có thứ tự Giải thuật sắp xếp chèn sẽ thực hiện việc tìm kiếm liên tiếp qua mảng đó, và các phần tử không có thứ tự sẽ được di chuyển và được chèn vào vị trí thích hợp trong danh sách con (của cùng mảng đó)
Trang 72.4 Merge Sort ( sắp xếp trộn ):
Thuật toán sắp xếp merge sort là một trong những thuật toán có độ phức tạp ở mức trung bình và cùng sử dùng phương pháp chia để trị giống thuật toán sắp xếp nhanh quick sort Thuật toán này không chỉ áp dụng trong sắp xếp mà còn ở nhiều bài toán khác
Minh họa thuật toán sắp xếp Merge sort
mảng cần sắp xếp thành 2 nửa Tiếp tục lặp lại việc này ở các nửa mảng đã chia Sau cùng gộp các nửa đó thành mảng đã sắp xếp
Trang 82.5 Heap Sort ( sắp xếp vun đống ):
Thuật toán Heap sort là một kỹ thuật sắp xếp phân loại dựa trên cấu trúc dữ liệu Binary Heap Heap sort giúp sắp xếp các phần tử trong danh sách sao cho phần tử lớn nhất được xếp vào cuối danh sách, và quá trình này sẽ lặp cho các phần tử còn lại trong danh sách Heap sort thường được người dùng lựa chọn sử dụng nhiều nhờ có tốc độ chạy nhanh
và không quá phức tạp
Thuật toán Heap sort sẽ được sử dụng để biểu diễn cho thuộc tính heap của một nút trong cây nhị phân, bao gồm 2 loại:
+ Max heap
Min heap +
Trang 92.6 Quick Sort ( sắp xếp nhanh )
Thuật toán Quick Sort là một thuật toán sắp xếp còn được gọi là sắp xếp kiểu phân chia (Part sort) Là một thuật toán hiệu quả dựa trên việc phân chia mảng dữ liệu thành cá nhóm phần tử nhỏ hơn
Ý tưởng thuật toán Quick Sort:
2 Khai báo 2 biến con trỏ để trỏ để duyệt 2 phía của phần tử chốt
3 Biến bên trái trỏ đến từng phần tử mảng con bên trái của phần tử chốt
4 Biến bên phải trỏ đến từng phần tử mảng con bên phải của phần tử chốt
5 Khi biến bên trái nhỏ hơn phần tử chốt thì di chuyển sang phải.
6 Khi biến bên phải nhỏ hơn phần tử chốt thì di chuyển sang trái
7 Nếu không xảy ra trưởng hợp 5 và 6 thì tráo đổi giá trị 2 biến trái và phải
8 Nếu trái lớn hơn phải thì đây là giá trị chốt mới
*
* *
Trang 10Chương 3
SO SÁNH TỐC ĐỘ CÁC THUẬT TOÁN
*
* *
Trang 11Chương 4
KẾT QUẢ THỰC NGHIỆM
1 Những kiến thức đã nắm được:
Qua những gì chúng ta đã tìm hiểu về các thuật toán sắp xếp chúng ta đã nắm bắt được các kiến thực cơ bản, cách hoạt động và nguyên lí của các thuật toán, so sánh được tốc độ của các thuật toán qua các ví du Qua đó chúng ta có thể nhận biết được loại thuật toán săp xếp nào là nhanh nhất, và ứng dụng chúng vào đúng yêu cầu sắp xếp, để thu được kết quả chính xác và nhanh nhất
2 Những điều chưa thực hiện được:
Tuy nhiên chúng ta chỉ mới bắt đầu tìm hiểu và chỉ tìm hiểu những thuật toán sắp xếp phổ biến và cơ bản, còn rất nhiều thuật toán sắp xếp khác chúng ta chưa nhắc đến Các thuật toán chúng ta chỉ mới tìm hiểu cơ bản chưa chuyên sâu và rõ ràng hơn, để người đọc dễ tiếp thu
và hiểu rõ về nó hơn chúng ta sẽ có một bài đồ án cơ sở mới đầy đủ thông tin hơn, giúp cho mọi người có thể tìm hiểu rõ về thuật toán sắp xếp
*
* *
Chương 5
KẾT LUẬN
Hiện nay hầu hết tên các hệ dữ liệu , quản lý dữ liệu, thao tác tìm kí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à muốn việc tìm kiếm nhanh chóng thì dữ liệu cần phải được sắp xếp sẵn, ngăn nắm theo một trật tự hệ thông nhất định sẽ cho phép chúng ta tìm kiếm nhanh , việc tìm kiếm sắp xếp có ý nghĩa rất lớn đến việc quản lí và lưu trữ
Trang 12Do đó khi xây dụng một hệ thống quản lý thông tin trên máy tính, bên cạnh các thuật toá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ủ đề quan trọng cần quan tâm
Hiện nay đã có nhiều giải thuật tìm kiếm và sắp xếp được xây dụng, và mức độ hiệu quả của từng thuật toán 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
Trên đây là các thuật toán sắp xếp cơ bản và phổ biến nhất, được sử dụng rộng rãi Các thuật toàn này sẽ giúp ích cho chúng ta rất nhiều trong công việc, học tâp
********TÀI LIỆU THAM KHẢO*********
https://vi.wikipedia.org/wiki/Thu%E1%BA%ADt_to%C3%A1n_s%E1%BA%AFp_x%E1%BA%BFp