Hướng dẫn what is the time complexity of python slice? - độ phức tạp thời gian của lát trăn là gì?
Giả sử tôi có một số danh sách python, Show 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,8132 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,8132 Huy hiệu vàng28 Huy hiệu bạc43 Huy hiệu đồng45 gold badges578 silver badges655 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. cấp độ 2 Vì vậy, nếu tôi muốn cắt một mảng trong vòng một thời gian, thì điều gì sẽ là một cách tối ưu để làm điều đó để tôi vẫn có thể giữ thuật toán ở độ phức tạp thời gian O (n)? 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. 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. 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
Sự phức tạp về thời gian của lát cắt là gì?Cắt lát chỉ là một phần sao chép của danh sách, vì vậy độ phức tạp của thời gian giống như bản sao.O (n+k) là trường hợp trung bình, bao gồm phải phát triển hoặc thu nhỏ danh sách để điều chỉnh số lượng các phần tử được chèn để thay thế lát cắt ban đầu.O(n+k) is the average case, which includes having to grow or shrink the list to adjust for the number of elements inserted to replace the original slice.
Sự phức tạp về thời gian và không gian của việc cắt 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 tới 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.time complexity amounts to O(nk). Space complexity is only O(n), since the temporary slices are reclaimable immediately.
Có phải lát cắt python thời gian không đổi?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. |