Spec JavaScript không quy định thuật toán cụ thể cho Array.sort(). Tùy engine triển khai. Các engine dùng thuật toán khác nhau:
- Mozilla (SpiderMonkey): Merge Sort. Xem code C tại Mozilla repo.
- WebKit (Chrome, Safari): Chọn thuật toán dựa trên kiểu element và độ dài mảng:
- Mảng số: C++ std::sort (thường là Introsort - hybrid Quick/Heap/Insertion)
- Mảng non-numeric: Merge Sort
- Trường hợp khác: Selection Sort
- V8 (Node.js, Chrome): Timsort (hybrid Merge/Insertion) - stable, tối ưu cho dữ liệu gần sorted
- Chakra (Edge cũ): Quick Sort biến thể
Lưu ý: ES2019 yêu cầu sort() phải stable (giữ thứ tự element bằng nhau). V8 chuyển sang Timsort để đáp ứng. Trước đó V8 dùng Quick Sort unstable.