Hướng dẫn python list del time complexity - danh sách python del thời gian phức tạp

Trang này ghi lại sự phức tạp về thời gian (hay còn gọi là "Big O" hoặc "Big OH") của các hoạt động khác nhau trong Cpython hiện tại. Các triển khai Python khác (hoặc các phiên bản phát triển cũ hơn hoặc vẫn còn dưới của CPython) có thể có các đặc điểm hiệu suất hơi khác nhau. Tuy nhiên, nhìn chung là an toàn khi cho rằng chúng không chậm hơn so với hệ số O (log n).

Nói chung, 'n' là số lượng các yếu tố hiện tại trong container. 'K' là giá trị của một tham số hoặc số lượng phần tử trong tham số.

danh sách

Trường hợp trung bình giả định các tham số được tạo ra đồng đều một cách ngẫu nhiên.

Trong nội bộ, một danh sách được biểu diễn dưới dạng một mảng; Các chi phí lớn nhất đến từ việc tăng vượt quá quy mô phân bổ hiện tại (vì mọi thứ phải di chuyển) hoặc từ việc chèn hoặc xóa ở đâu đó gần đầu (vì mọi thứ sau đó phải di chuyển). Nếu bạn cần thêm/xóa ở cả hai đầu, hãy xem xét sử dụng một bộ sưu tập.Deque thay thế.

Hoạt động

Trường hợp trung bình

Đã khấu hao trường hợp xấu nhất

Sao chép

Trên)

Trên)

Nối [1]

O (1)

O (1)

Pop cuối cùng

O (1)

O (1)

Pop cuối cùng

Trên)

Trên)

Nối [1]

Trên)

Trên)

Nối [1]

O (1)

O (1)

Pop cuối cùng

O (1)

O (1)

Pop cuối cùng

Trên)

Trên)

Nối [1]

Trên)

Trên)

Nối [1]

O (1)

O (1)

Pop cuối cùng

Trên)

Trên)

Nối [1]

O (1)

O (1)

Pop cuối cùng

O (1)

O (1)

Pop cuối cùng

Trung cấp pop [2]

Trung cấp pop [2]

Chèn

Nhận mục

Nhận mục

Thiết lập các mục

Trên)

Nối [1]

Trên)

Nối [1]

O (1)

O (1)

collections.deque

Pop cuối cùng

Hoạt động

Trường hợp trung bình

Đã khấu hao trường hợp xấu nhất

Sao chép

Trên)

Trên)

Nối [1]

O (1)

O (1)

Pop cuối cùng

O (1)

O (1)

Pop cuối cùng

O (1)

O (1)

Pop cuối cùng

O (1)

O (1)

Pop cuối cùng

O (1)

O (1)

Pop cuối cùng

O (1)

O (1)

Pop cuối cùng

O (1)

O (1)

Pop cuối cùng

Trên)

Trên)

Nối [1]

O (1)

Hoạt động

Pop cuối cùng

Trung cấp pop [2]

Chèn

Thiết lập các mục

O (1)

Trên)

Pop cuối cùng

O(len(s)+len(t))

Trung cấp pop [2]

Chèn

Nhận mục

Thiết lập các mục

Xóa mục

Lặp đi lặp lại

Nhận lát

Được)

Del lát

Đặt lát

O (k+n)

Được)

Nhận mục

Thiết lập các mục

Đặt lát

O (k+n)

  • Mở rộng [1]

  • Loại

O (n log n)

nhân

O (nk)

Hoạt động

Trường hợp trung bình

Đã khấu hao trường hợp xấu nhất

x trong s

O (1)

Trên)

tối thiểu, tối đa

Trên)

Trên)

Nối [1]

O (1)

Trên)

O (1)

O (1)

Trên)

Pop cuối cùng

O (1)

Trên)

Trung cấp pop [2]

Trên)

Trên)

Chèn

Nhận mục

Thiết lập các mụck from a list of size n shifts all elements after k by one slot to the left using memmove. n - k elements have to be moved, so the operation is O(n - k). The best case is popping the second to last element, which necessitates one move, the worst case is popping the first element, which involves n - 1 moves. The average case for an average value of k is popping the element the middle of the list, which takes O(n/2) = O(n) operations.

Xóa mục

Độ phức tạp thời gian của việc loại bỏ trong Python là gì?

Độ phức tạp thời gian chạy của tập hợp. loại bỏ () hàm trên một tập hợp với n phần tử là O (1). Vì vậy, bộ của Python. phương thức loại bỏ () có độ phức tạp thời gian chạy không đổi.O(1). So, Python's set. remove() method has constant runtime complexity.

Danh sách Python có phải là Pop O 1 không?

Có, đó là O (1) để bật phần tử cuối cùng của danh sách Python và O (n) để bật một yếu tố tùy ý (vì toàn bộ phần còn lại của danh sách phải được thay đổi).Vì vậy, chỉ để làm cho nó rõ ràng, danh sách.pop (0) là o (n) và danh sách.pop () là O (1)., and O(N) to pop an arbitrary element (since the whole rest of the list has to be shifted). So just to make it clear, list. pop(0) is O(n) and list. pop() is O(1).

Độ phức tạp thời gian của việc loại bỏ là gì?

Độ phức tạp thời gian của phương pháp xóa (chỉ số int) là O (n).Lý do: ArrayList thực hiện giao diện RandomAccess, do đó, việc truy cập bất kỳ phần tử ngẫu nhiên nào sẽ được thực hiện trong độ phức tạp O (1).Tuy nhiên, vì các yếu tố còn lại cũng cần phải được dịch chuyển bởi một nơi sang trái của chúng, sự phức tạp về thời gian tổng thể trở thành O (n).O(N). Reason: ArrayList implements RandomAccess interface, so accessing any random element will be done in O(1) complexity. However, since the remaining elements also need to be shifted by one place to their left, the overall time complexity becomes O(N).

Sự phức tạp về thời gian của danh sách trong Python là gì?

Độ phức tạp thời gian trung bình của toán tử trong danh sách là O (N).Nó trở nên chậm hơn khi có nhiều yếu tố.Thời gian thực hiện thay đổi rất nhiều tùy thuộc vào vị trí của giá trị cần tìm.Phải mất nhiều thời gian nhất khi giá trị của nó ở cuối hoặc không tồn tại.O(n) . It becomes slower when there are many elements. The execution time varies greatly depending on the position of the value to look for. It takes the longest time when its value is at the end or does not exist.