Computer >> Máy Tính >  >> Lập trình >> Python

Bisect - Thuật toán phân chia mảng trong Python

Thực hiện các thao tác sắp xếp sau mỗi lần chèn vào một danh sách dài có thể tốn kém về thời gian mà bộ xử lý tiêu thụ. Mô-đun bisect đảm bảo rằng danh sách vẫn được sắp xếp tự động sau khi chèn. Với mục đích này, nó sử dụng thuật toán phân giác. Mô-đun có các chức năng sau:

bisect_left ()

Phương thức này định vị điểm chèn cho một phần tử nhất định trong danh sách để duy trì thứ tự đã sắp xếp. Nếu nó đã có trong danh sách, điểm chèn sẽ nằm trước (bên trái) bất kỳ mục nhập hiện có nào. Giá trị trả về có thể được sử dụng làm tham số đầu tiên cho list.insert ()

bisect_right ()

Phương thức này tương tự như bisect_left (), nhưng trả về một điểm chèn đứng sau (bên phải) bất kỳ mục nhập hiện có nào của x trong a.

bisect.insort_left ()

Phương pháp này chèn giá trị đã cho theo thứ tự được sắp xếp. Điều này tương đương với a.insert (bisect.bisect_left (a, x, lo, hi), x)

bisect.insort_right ()

bisect.insort ()

Các phương thức Bothe tương tự như insort_left (), nhưng chèn giá trị đã cho vào danh sách sau bất kỳ mục nhập hiện có nào có cùng giá trị.

Ví dụ

>>> nums = [45,21,34,87,56,12,5,98,30,63]
>>> nums.sort()
>>> nums
[5, 12, 21, 30, 34, 45, 56, 63, 87, 98]
>>> import bisect
>>> p = bisect.bisect_left(nums,50)
>>> p
6
>>> nums.insert(p,50)
>>> nums
[5, 12, 21, 30, 34, 45, 50, 56, 63, 87, 98]
>>> bisect.insort(nums, 29)
>>> nums
[5, 12, 21, 29, 30, 34, 45, 50, 56, 63, 87, 98]