Các Thuật Toán Sắp Xếp Phổ Biến Và JavaScript | TopDev
Có thể bạn quan tâm
Bài viết được sự cho phép của tác giả Lưu Bình An
Chúng ta sẽ hiện thực các thuật toán này bằng JavaScript,.
Hàm helper để swap giá trị
function swap(arr, a, b) { let temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; } Hàm để so sánh giá trị
const Compare = { LESS_THAN: -1, BIGGER_THAN: 1 }; function defaultCompare(a, b) { if (a === b) { return 0; } return a < b ? Compare.LESS_THAN : Compare.BIGGER_THAN; }Bubble Sort
- Tình huống tốt nhất: độ phức tạp = O(N) (đi qua đúng n phần tử)
- Tình huống xấu nhất: độ phức tạp = O(N^2) (đi qua n mũ 2 phần tử)
Cái này rất ít xài trong thực tế, chỉ để dạy và học, vì nó chậm nhất so với các thuật toán khác.
Ý tưởng là sẽ so sánh 2 phần tử liền kề, hoán đổi vị trí cho phù hợp

Để hình dung thuật toán này, bạn có thể nghiên cứu cái hình mô tả bên dưới

Selection Sort
Không phân biệt tính huống tốt hay xấu gì cả, nó luôn có độ phức tạp = O(N^2)

Ý tưởng của thuật toán là tìm ra giá trị nhỏ nhất trong đám, rồi đưa nó về vị trí đầu tiên, lặp lại cho các phần tử kế tiếp.


Insertion Sort
- Tình huống tốt nhất: độ phức tạp = O(N)
- Tình huống xấu nhất: độ phức tạp = O(N^2)
Thuật toán này nó sẽ tạo ra mảng mới, tìm và chèn từng phần tử một vào đúng thứ tự. Sẽ như sau
- Cứ coi như phần tử đầu tiên là đúng vị trí
- Lấy phần tử đầu tiên này so sánh với phần tử tiếp theo, nó có 2 tình huống một là ở yên vị trí đang ở, hay là chúng ta chèn phần tử thứ 2 vào trước phần tử đầu.
- Lặp lại tương tự


Merge Sort
Độ phức tạp cố định: O(N Log N)
Là thuật toán chia để trị, chi nhỏ các phần tử ban đầu ra thành các nhóm nhỏ hơn để dể xử lý từng cụm


Quick sort
- Tình huống tốt nhất: độ phức tạp = O(N Log N)
- Tình huống xấu nhất: độ phức tạp = O(N^2)
Đây là thuật toán được sử dụng nhiều nhất, vẫn là phương pháp chia để trị
Có thể xem lại bài giới thiệu về Quick Sort của mình

Bucket Sort
- Tình huống tốt nhất: độ phức tạp = O(N + k)
- Tình huống xấu nhất: độ phức tạp = O(N^2)
Ý tưởng là sẽ chia đôi thành 2 mảng, rồi trên từng mảng đó, áp dụng một thuật toán sắp xếp trên đó, như insertion sort

Lưu ý bucket sort chạy tốt nhất khi có thể chia đều các phần tử cho các bucket, việc chia thành 2 bucket cũng không bắt buộc, có thể chia nhiều hơn nếu số lượng phần tử nhiều

Bài viết gốc được đăng tải tại vuilaptrinh.com
Có thể bạn quan tâm:
- Những mẹo nhỏ giúp bạn cải thiện Javascript code
- Các thuật toán sắp xếp lập trình viên phải biết
- Front end Optimization – 9 tips để cải thiện Web Performance
Xem thêm các việc làm JavaScript hấp dẫn tại TopDev
Từ khóa » Hàm Sắp Xếp Trong Javascript
-
5 Mẹo Khi Sử Dụng Hàm Sort() Trong JavaScript | Học JS
-
Hàm Array Sort() Trong Javascript - Freetuts
-
Cách Sắp Xếp Thứ Tự Các Phần Tử Mảng Trong JavaScript - Web Cơ Bản
-
Sắp Xếp Trong JavaScript | Học Lập Trình JavaScript
-
Sắp Xếp Phần Tử Trong Mảng JavaScript (sort)
-
Làm Thế Nào để Sắp Xếp Một Mảng Các đối Tượng Trong JavaScript
-
Sắp Xếp Mảng Trong JavaScript
-
Sắp Xếp Tiếng Việt Trong JavaScript
-
Sắp Xếp Mảng Trong JavaScript - Lập Trình Từ Đầu
-
Sắp Xếp Mảng Trong JavaScript - NIIT - ICT HÀ NỘI
-
rt() - JavaScript | MDN - Mozilla
-
Cách Sắp Xếp Mảng Trong JavaScript
-
Sắp Xếp Mảng Trong JavaScript - ge
-
Cách Sắp Xếp Mảng Theo Giá Trị Ngày Trong JavaScript - Tech Wiki