Hướng dẫn time complexity of slicing in python - độ phức tạp về thời gian của việc cắt lát trong python
67 Show Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm. Giả sử tôi có một số danh sách python, Cá nhân, nếu tôi mã hóa "máy cắt", tôi sẽ lặp lại từ Cảm ơn bạn, Đã hỏi ngày 2 tháng 11 năm 2012 lúc 21:59Nov 2, 2012 at 21:59
0
Nhận một lát là O (____ 8). Điều này là do đại diện nội bộ của Python trong danh sách là một mảng, vì vậy bạn có thể bắt đầu tại Để biết thêm thông tin, hãy xem mục Wiki phức tạp về thời gian Python Bạn cũng có thể xem xét việc triển khai trong nguồn cpython nếu bạn muốn.
Đã trả lời ngày 2 tháng 11 năm 2012 lúc 22:01Nov 2, 2012 at 22:01
Sam Mussmannsam MussmannSam Mussmann 5.7832 huy hiệu vàng28 Huy hiệu bạc43 Huy hiệu đồng2 gold badges28 silver badges43 bronze badges 2 Đối với một danh sách kích thước N và một lát có kích thước M, phép lặp thực sự chỉ là O (M), không phải O (N). Vì m thường là Trong thực tế, nếu bạn nghĩ về lời giải thích của bạn, bạn có thể thấy tại sao. Bạn chỉ lặp lại từ I_1 đến I_2, không phải từ 0 đến I_1, sau đó I_1 đến I_2. Đã trả lời ngày 2 tháng 11 năm 2012 lúc 22:01Nov 2, 2012 at 22:01
Sam Mussmannsam Mussmannabarnert 5.7832 huy hiệu vàng28 Huy hiệu bạc43 Huy hiệu đồng44 gold badges574 silver badges652 bronze badges cấp độ 1 O (n) trong đó n là chiều dài của lát cắt. Cắt lát chỉ là "bản sao một phần của danh sách" để độ phức tạp thời gian giống như bản sao. Sự phức tạp về thời gian và không gian của việc cắt một mảng trong Python là bao nhiêu? Mỗi hoạt động lát cắt về cơ bản lên tới một hoạt động sao chép O (N) nguyên thủy. Vì chỉ các tài liệu tham khảo được sao chép, kích thước hoặc loại yếu tố không quan trọng. Tổng cộng, độ phức tạp thời gian lên đến O (NK). Độ phức tạp không gian chỉ là O (N), vì các lát tạm thời có thể lấy lại ngay lập tức. cấp độ 1 cấp độ 2 cấp độ 1 cấp độ 2 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áchTrườ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ế.
collections.dequePop cuối cùng
Nối [1]O (1)
Mở rộng [1]Loại O (n log n)
Trung cấp pop [2]Chèn Nhận 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. [3] = Đối với các hoạt động này, trường hợp xấu nhất N là kích thước tối đa mà container từng đạt được, thay vì chỉ kích thước hiện tại. Ví dụ: nếu các đối tượng N được thêm vào từ điển, thì N-1 sẽ bị xóa, từ điển vẫn sẽ được kích thước cho các đối tượng N (ít nhất) cho đến khi một lần chèn khác được thực hiện. Sự phức tạp về thời gian của lát cắt trong Python là gì?danh sách
Độ phức tạp thời gian của việc cắt danh sách là gì?O (n) trong đó n là chiều dài của lát cắt.Cắt lát chỉ là "bản sao một phần của danh sách" để độ phức tạp thời gian giống như bản sao.. Slicing is just "copy part of the list" so time complexity is the same as copy.
Sự phức tạp về thời gian và không gian của việc cắt một mảng trong Python là bao nhiêu?Mỗi hoạt động lát cắt về cơ bản lên tới một hoạt động sao chép O (N) nguyên thủy.Vì chỉ các tài liệu tham khảo được sao chép, kích thước hoặc loại yếu tố không quan trọng.Tổng cộng, độ phức tạp thời gian lên đến O (NK).Độ phức tạp không gian chỉ là O (N), vì các lát tạm thời có thể lấy lại ngay lập tức.O(nk). Space complexity is only O(n), since the temporary slices are reclaimable immediately.
Python có cắt lát không đổi thời gian không?Xây dựng một lát cắt là một phần của N mất thời gian O (N).Trong bài viết liên quan này, ký hiệu Python được giải thích.Bạn cũng có thể xem xét tài liệu Python về sự phức tạp về thời gian.Vì vậy, câu trả lời là không nói chung, chỉ đối với một lát kích thước không đổi, nó có thể là thời gian không đổi.only for a constant size slice it can be constant time. |