Nhảy chuyển đến

tim bài tự

tim bài tự là gộp vào bài tự cùng cắm vào bài tự kết hợp, là một cáiỔn địnhBài tự thuật toán, từ Tim Peters với 2002 năm dùng Python thực hiện. Hiện tại, tim bài tự là Python tiêu chuẩn bài tự thuật toán, thả bị Java SE7 dùng cho đối phi nguyên thủy loại hình số tổ bài tự.

tim bài tự ở tốt nhất dưới tình huống thời gian phức tạp độ vì,Kém cỏi nhất dưới tình huống thời gian phức tạp độ vì,Kỳ vọng thời gian phức tạp độ vì.tim bài tự ở nhất hư dưới tình huống không gian phức tạp độ vì.

Thuật toán

Mọi người đều biết, gộp vào bài tự là trước đem số tổ phân chia vì hai bộ phận, sau đó đệ quy mà đối hai cái tử số tổ tiến hành gộp vào bài tự, cuối cùng xác nhập hai cái tử số tổ. Cứ như vậy, gộp vào bài tự xác nhập thao tác nhỏ nhất đơn vị chính là đơn cái nguyên tố. Nhưng là, số tổ trung khả năng nguyên bản liền tồn tại liên tục thả có tự tử số tổ, gộp vào bài tự vô pháp lợi dụng cái này đặc tính.

tim bài tự vì lợi dụng số tổ trung bản thân liền tồn tại liên tục thả có tự tử số tổ, lấy RUN làm xác nhập thao tác nhỏ nhất đơn vị. Trong đó, RUN là một cái thỏa mãn dưới tính chất tử số tổ:

  • Một cái RUN hoặc là thị phi hàng tự, hoặc là là nghiêm khắc thăng tự.
  • Một cái RUN tồn tại một cái chiều dài hạn cuối.

tim bài tự quá trình chính là một cái cùng loại gộp vào bài tự quá trình, đem số tổ phân chia vì nhiều RUN, sau đó lấy nào đó quy tắc không ngừng mà xác nhập hai cái RUN, thẳng đến số tổ có tự. Cụ thể quá trình như sau:

LệnhKhởi động lại số lượng tổ lớn nhỏ,Khởi động lại vì.

XácĐịnhKhởiĐiểmSoĐoảnDuyênTrườngThẳngĐếnPhóngĐếnThượngNhấtĐỉnhThượngCáiTrườngĐộTươngGầnHợpCũngNhấtĐỉnhThượngCáiTrườngĐộTrườngĐộ

Trong đó,Hàm số là căn cứ trước mặt số tổ trưởng độ xác địnhCụ thể giá trị hàm số, natural run ý tứ là nguyên bản liền phi hàng tự hoặc là nghiêm khắc thăng tự run, mở rộng chiều dài không đủ run chính là dùng cắm vào bài tự hướng run trung tăng thêm nguyên tố.

Phức tạp độ chứng minh

Tốt nhất dưới tình huống, số tổ bản thân liền có tự, tức số tổ bản thân chính là một cái RUN, lúc này tim bài tự liền biến lịch một lần số tổ, tìm được rồi duy nhất RUN, liền kết thúc. Cho nên, tốt nhất dưới tình huống, tim bài tự thời gian phức tạp độ vì.

Viết ở phía sau

Bổn văn chỉ là đơn giản giới thiệu tim bài tự nguyên lý, trên thực tế tim bài tự ở thực hiện thời điểm còn có một ít mặt khác ưu hoá, nơi này không hề nhất nhất liệt kê. tim bài tự ở java trung thực hiện viết đến phi thường hảo, nếu muốn biết chân chính tim bài tự đề cử đi xem java trung tim bài tự thực hiện.

Tham khảo tư liệu

  1. Timsort
  2. On the Worst-Case Complexity of TimSort
  3. original explanation by Tim Peters
  4. java thực hiện
  5. c ngôn ngữ thực hiện