Trong thư viện chuẩn của Java, có phương pháp nào có thể cho phép một sắp xếp một ArrayList
tại chỗ, tức là sử dụng bộ nhớ bổ sung O(1)
không?Java: sắp xếp một ArrayList tại chỗ
Collections.sort(List<T>)
không đáp ứng yêu cầu này vì nó
bãi danh mục quy định vào một mảng, sắp xếp mảng, và lặp trên danh sách đặt lại mỗi phần tử từ vị trí tương ứng trong mảng.
Nếu không có gì trong thư viện chuẩn, thư viện của bên thứ ba nào có thể được sử dụng để thực hiện việc này?
Chỉ có điều này sẽ mất một bản sao của mảng và do đó sử dụng O (n) thêm lưu trữ theo Collections.sort. – Adamski
Trong Java 7, nó không có một bản sao. Tôi chưa kiểm tra Java 6. –
Thú vị. Tôi thực sự khá ngạc nhiên khi họ đã thay đổi hành vi để trả về mảng cơ bản; có thể tưởng tượng điều này sẽ gây ra rất nhiều lỗi tinh vi cho những người nâng cấp từ Java 6. – Adamski