Hướng dẫn python time complexity cheat sheet - bảng cheat phức tạp về thời gian python

Cải thiện bài viết

Lưu bài viết

Các cấu trúc dữ liệu tích hợp Python như danh sách, bộ, từ điển cung cấp một số lượng lớn các hoạt động giúp việc viết mã ngắn gọn dễ dàng hơn nhưng không nhận thức được sự phức tạp của chúng có thể dẫn đến hành vi chậm bất ngờ của mã Python của bạn. & NBSP;

Prerequisite: List, Dictionaries, Sets 

Ví dụ: & nbsp; 

Một thao tác tra cứu từ điển đơn giản có thể được thực hiện bởi: & nbsp; & nbsp;
 

if key in d:

hoặc

if dict.get(key)

Đầu tiên có độ phức tạp về thời gian của O (n) đối với python2, o (1) đối với python3 và cái sau có O (1) có thể tạo ra nhiều khác biệt trong các câu lệnh lồng nhau. & NBSP;

Điểm quan trọng: & nbsp; & nbsp;  

  1. Danh sách tương tự như các mảng có khả năng bổ sung và xóa hai chiều.
  2. Từ điển và thiết lập sử dụng các bảng băm để chèn/xóa và tra cứu các hoạt động.

Bảng gian lận này có thể được đề cập để chọn các hoạt động hiệu quả đối với thời gian. & NBSP;

Danh sách hoạt động

Hoạt độngVí dụLớp học phức tạp
 Trường hợp trung bìnhĐã khấu hao trường hợp xấu nhất
Nốil.append(item)O(1)O(1)
Xa lạl.clear ()O (1)O (1)
Ngăn chặnmục trong/không ở lTRÊN)TRÊN)
Sao chépl.copy ()TRÊN)TRÊN)
Sao chépl.copy ()TRÊN)TRÊN)
Sao chépl.copy ()TRÊN)TRÊN)
Sao chépl.copy ()TRÊN)TRÊN)
Sao chépl.copy ()O (1)O (1)
Ngăn chặnmục trong/không ở lTRÊN)TRÊN)
Sao chépl.copy ()O (1)O (1)
Ngăn chặnmục trong/không ở lTRÊN)TRÊN)
Sao chépl.copy ()TRÊN)TRÊN)
Sao chépl.copy ()O (1)O (1)
Ngăn chặnmục trong/không ở lTRÊN)TRÊN)
Sao chépl.copy ()TRÊN)TRÊN)
Sao chépl.copy ()TRÊN)TRÊN)
Sao chépl.copy ()Xóa bỏXóa bỏ
del l [i]Gia hạnl.extend (…)l.extend (…)
Sự bình đẳngL1 == L2, L1! = L2O (1)O (1)

Ngăn chặn

mục trong/không ở lTuples have the same operations (non-mutable) and complexities. 

TRÊN)

Hoạt độngVí dụLớp học phức tạp
 Trường hợp trung bìnhĐã khấu hao trường hợp xấu nhất
Nốid.clear()O(1)O(1)
Xa lạl.clear ()O (1)O (1)
Sao chépl.copy ()O (1)TRÊN)
Sao chépl.copy ()O (1)TRÊN)
Sao chépl.copy ()TRÊN)TRÊN)
Sao chépl.copy ()O (1)O (1)
Ngăn chặnmục trong/không ở lO (1)TRÊN)
Sao chépl.copy ()O (1)O (1)
Ngăn chặnmục trong/không ở lO (1)O (1)
Ngăn chặnmục trong/không ở lO (1)O (1)
Ngăn chặnmục trong/không ở lTRÊN)TRÊN)

Sao chépDefaultdict has operations same as dict with same time complexity as it inherits from dict.  

l.copy ()

Hoạt độngVí dụLớp học phức tạp
 Trường hợp trung bìnhĐã khấu hao trường hợp xấu nhất
Nốis.add(item)O(1)O(N)
Xa lạl.clear ()O (1)O (1)
Sao chépl.copy ()TRÊN)TRÊN)
Ngăn chặnmục trong/không ở lO (1)TRÊN)
Sao chépl.copy ()Xóa bỏXóa bỏ
del l [i]Gia hạnO (1)TRÊN)
Sao chépl.copy ()Xóa bỏXóa bỏ
del l [i]Gia hạnl.extend (…)Sự bình đẳng
Sao chépl.copy ()Xóa bỏXóa bỏ
del l [i]Gia hạnXóa bỏXóa bỏ
Ngăn chặnmục trong/không ở lTRÊN)TRÊN)
Sao chéps1Xóa bỏXóa bỏ
del l [i]Gia hạnl.extend (…)Xóa bỏ
Ngăn chặnmục trong/không ở lO (1)TRÊN)
Sao chépl.copy ()Xóa bỏSự bình đẳng
L1 == L2, L1! = L2Mục lụcl [i]Lặp đi lặp lại

Đối với mục trong L:

Chiều dàiFrozen sets have the same operations (non-mutable) and complexities. 

Làm thế nào để python tính toán độ phức tạp thời gian?

Độ phức tạp thời gian thường được ước tính bằng cách đếm số lượng hoạt động cơ bản được thực hiện bởi thuật toán, giả sử rằng mỗi thao tác cơ bản cần một lượng thời gian cố định để thực hiện.counting the number of elementary operations performed by the algorithm, supposing that each elementary operation takes a fixed amount of time to perform.

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

Đầu tiên có độ phức tạp về thời gian của O (N) đối với Python2, O (1) đối với Python3 và sau này có O (1) có thể tạo ra nhiều khác biệt trong các câu lệnh lồng nhau.O(N) for Python2, O(1) for Python3 and the latter has O(1) which can create a lot of differences in nested statements.

Có gói Python tính độ phức tạp về thời gian không?

BIG_O là một mô -đun Python để ước tính độ phức tạp về thời gian của mã Python từ thời gian thực hiện của nó.Nó có thể được sử dụng để phân tích cách quy mô chức năng với các đầu vào có kích thước tăng.BIG_O thực hiện hàm python cho đầu vào tăng kích thước n và đo thời gian thực hiện của nó.. It can be used to analyze how functions scale with inputs of increasing size. big_O executes a Python function for input of increasing size N, and measures its execution time.

O 1 có nhanh hơn o log n không?

Khi chúng tôi tăng kích thước đầu vào 'n', o (1) sẽ vượt trội so với O (log n).Hãy xem một ví dụ, giả sử n = 2048, bây giờ mã 1 sẽ mất 4 ms như trước đó nhưng mã 2 sẽ mất 11 ms để thực thi.Trong trường hợp này, O (1) vượt trội so với O (log n).O(1) will outperforms O(log n). Let's see an example, suppose n = 2048, now Code 1 will take 4 ms as it took previously but Code 2 will take 11 ms to execute. In this case, O(1) outperformed O(log n).