Thuật Toán Selection Sort Đơn Giản - Viblo
Có thể bạn quan tâm
Là một lập trình viên hẳn các bạn ai cũng đã từng phải sử dụng thuật toán sắp xếp. Trong SERI về thuật toán tìm kiếm này chúng ta sẽ tìm hiểu tư tưởng của các loại thuật toán sắp xếp cơ bản nhất: Bubble Sort, Insertion Sort, Merge Sort, Heap Sort, QuickSort, Radix Sort, Counting Sort, Bucket Sort, ShellSort. Trong bài viết này mình chúng ta sẽ tìm hiểu về Selection Sort :
- Thuật toán Selection Sort là gì?
- Các thành phần chính của thuật toán Selection Sort.
- Cách triển khai thuật toán Selection Sort qua ví dụ.
Toàn bộ ví dụ mình sẽ sử dụng python giúp các bạn dễ hiểu và dễ nắm bắt. Let's do it ^^
2. Selection Sort (Sắp Xếp Chọn)Thuật toán Selection Sort sắp xếp một mảng bằng cách liên tục tìm phần tử nhỏ nhất (xét theo thứ tự tăng dần) từ phần chưa được sắp xếp và đặt nó ở đầu. Thuật toán duy trì hai mảng con trong một mảng nhất định.
-
Mảng con đã được sắp xếp.
-
Mảng con còn lại chưa được sắp xếp.
Trong mỗi lần lặp lại sắp xếp lựa chọn, phần tử tối thiểu (xét theo thứ tự tăng dần) từ mảng con chưa được sắp xếp sẽ được chọn và chuyển đến mảng con đã sắp xếp.
Ví dụ sau giải thích các bước trên:
//Dãy chưa sắp xếp arr[] = 64 25 12 22 11 // Tìm phần tử bé nhất trong dãy arr[0...4] // đưa phần tử đó lên đầu dãy arr[0...4] **11** 25 12 22 64 // Tìm phần tử bé nhất trong dãy arr[1...4] // đưa phần tử đó lên đầu dãy arr[1...4] 11 **12** 25 22 64 // Tìm phần tử bé nhất trong dãy arr[2...4] // đưa phần tử đó lên đầu dãy arr[2...4] 11 12 **22** 25 64 // Tìm phần tử bé nhất trong dãy arr[3...4] // đưa phần tử đó lên đầu dãy arr[3...4] 11 12 22 **25** 64Dưới đây là sơ đồ khối theo từng bước thực hiện của thuật toán trên
Dưới đây là cách cài đặt thuật toán bằng ngôn ngữ Python:
import sys A = [64, 25, 12, 22, 11] for i in range(len(A)): # Tìm kiếm phần tử bé nhất trong dãy chưa được sắp xếp min_idx = i for j in range(i+1, len(A)): if A[min_idx] > A[j]: min_idx = j # Đổi chỗ phần tử bé nhất với phần tử đầu tiên A[i], A[min_idx] = A[min_idx], A[i] # Test Kết Quả print ("Sorted array") for i in range(len(A)): print("%d" %A[i]),Đây là kết quả
Sorted array: 11 12 22 25 64Thuật toán Selection Sort là một thuật toán khá đơn giản khi cài đặt. Thuật toán này có độ phức tạp là O(n2) vì có 2 vòng lặp.
3. Conclusion (Kết Luận)Trong bài viết này chúng ta đã tìm hiểu được thuật toán sắp xếp chọn (Selection Sort). Có cài nhìn tổng quan về thuật toán. Cách cài đặt thuật toán bằng ngôn ngữ Python. Độ thức tạp thuật toán. Rất mong đã đem lại cho bạn đọc những kiến thức thú vị. Nếu thấy hay bạn nhớ bấm follow mình nhé !!
Dưới đây là các bài viết cùng Seri :
- Thuật Toán Sắp Xếp Chèn (Insertion Sort): https://viblo.asia/p/thuat-toan-insertion-sort-don-gian-bWrZnVapZxw
- Thuật Toán Sắp Xếp Nổi Bọt ( Bubble Sort ): https://viblo.asia/p/thuat-toan-bubble-sort-don-gian-yMnKM8Oz57P
Từ khóa » độ Phức Tạp Của Selection Sort
-
Thuật Toán Sắp Xếp Chọn - Selection Sort | Học JavaScript
-
Độ Phức Tạp Của Thuật Toán Selection Sort - .vn
-
Đánh Giá độ Phức Tạp Của Hàm Selection Sort
-
Thuật Toán Selection Sort - Giới Thiệu Chi Tiết Và Code Ví Dụ Trên Nhiều ...
-
Thuật Toán Sắp Xếp Chọn (Selection Sort) - TEK4
-
[JAVA] SELECTION SORT: Thuật Toán Sắp Xếp Chọn
-
Thuật Toán Sắp Xếp Selection Sort - Code Từ Tâm
-
Sắp Xếp Chọn – Wikipedia Tiếng Việt
-
Thuật Toán Sắp Xếp Chọn Trực Tiếp (Selection Sort) - Góc Học IT
-
Giải Thuật Sắp Xếp Chọn (Selection Sort)
-
Thuật Toán Sắp Xếp Chọn (Selection Sort) - DNMTechs
-
ĐỒ ÁN NHẬP MÔN PHÂN TÍCH ĐỘ PHỨC TẠP CỦA THUẬT TOÁN
-
Thuật Toán Sắp Xếp Selection Sort Minh Họa Code Sử Dụng C++
-
Thuật Toán Sắp Xếp Trong C++ | TopDev