Chúng tôi đếm số phần tử mảng đọc và ghi. Để làm bong bóng sắp xếp, bạn cần truy cập (write ban đầu để cuối cùng, sau đó, trong trường hợp xấu nhất, hai đọc và hai viết để làm giao dịch hoán đổi). Để thực hiện tìm kiếm nhị phân, chúng ta cần ( cho tìm kiếm nhị phân, sau đó, trong trường hợp xấu nhất, để chuyển các phần tử mảng sang phải, sau đó 1 để viết phần tử mảng sang vị trí thích hợp của nó).n 2 log n + 2 n + 1 2 log n 2 n1 + 4 nn2 khúc gỗn + 2 n + 12 khúc gỗn2 n
Vì vậy, cả hai phương thức đều có cùng độ phức tạp đối với việc triển khai mảng, nhưng phương thức tìm kiếm nhị phân yêu cầu ít truy cập mảng hơn trong thời gian dài ... không có triệu chứng, bằng một nửa. Có những yếu tố khác khi chơi, một cách tự nhiên.
Trên thực tế, bạn có thể sử dụng các triển khai tốt hơn và chỉ tính các truy cập mảng thực tế (không truy cập vào phần tử được chèn). Bạn có thể thực hiện cho sắp xếp bong bóng và cho tìm kiếm nhị phân ... vì vậy, nếu truy cập đăng ký / bộ đệm rẻ và truy cập mảng thì tốn kém, tìm kiếm từ cuối và dịch chuyển dọc (bong bóng thông minh hơn sắp xếp để chèn) có thể tốt hơn, mặc dù không có triệu chứng như vậy.log n + 2 n + 12 n + 1đăng nhậpn + 2 n + 1
Một giải pháp tốt hơn có thể liên quan đến việc sử dụng một cấu trúc dữ liệu khác nhau. Mảng cung cấp cho bạn quyền truy cập O (1) (truy cập ngẫu nhiên), nhưng việc chèn và xóa có thể phải trả giá. Một bảng băm có thể có chèn (xóa) O (1), truy cập sẽ có giá. Các tùy chọn khác bao gồm BST và đống, v.v. Có thể đáng để xem xét nhu cầu sử dụng của ứng dụng của bạn để chèn, xóa và truy cập và chọn cấu trúc chuyên biệt hơn.
Cũng lưu ý rằng nếu bạn muốn thêm phần tử vào một mảng phần tử được sắp xếp , một ý tưởng tốt có thể là sắp xếp hiệu quả các mục , sau đó hợp nhất hai mảng; Ngoài ra, các mảng được sắp xếp có thể được xây dựng một cách hiệu quả bằng cách sử dụng heaps (heap sort).n mmnm