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

Thuật toán phân tách mảng trong Python

Thuật toán bisect được sử dụng để tìm vị trí trong danh sách, nơi dữ liệu có thể được chèn vào để giữ cho danh sách được sắp xếp. Python có một mô-đun được gọi là bisect . Sử dụng mô-đun này, chúng ta có thể sử dụng các thuật toán chia đôi.

Để sử dụng mô-đun này, chúng ta nên nhập nó bằng cách sử dụng -

import bisect

Có một số phép toán liên quan đến đường phân giác. Đây là -

Phương thức bisect.bisect (danh sách, phần tử, bắt đầu, kết thúc)

Phương pháp này được sử dụng để tìm một vị trí trong danh sách đã sắp xếp, nơi có thể đặt số và danh sách vẫn được sắp xếp. Nếu phần tử đã có mặt, nó sẽ trả về vị trí bên phải nhất, nơi có thể chèn số.

Phương thức bisect.bisect_left (danh sách, phần tử, bắt đầu, kết thúc)

Phương thức này giống với phương thức bisect (). Sự khác biệt duy nhất là, nếu mục đã có, phương thức này sẽ trả về vị trí bên trái nhất để chèn dữ liệu.

Phương thức bisect.bisect_right (danh sách, phần tử, bắt đầu, kết thúc)

Phương thức này hoàn toàn giống với phương thức bisect ().

Phương thức bisect.insort (danh sách, phần tử, bắt đầu, kết thúc)

Phương thức này được sử dụng để có được danh sách đã sắp xếp sau khi chèn phần tử vào đúng vị trí. Nếu phần tử đã có mặt, phần tử đó sẽ chèn vào đúng vị trí nhất để giữ cho danh sách được sắp xếp.

Phương thức bisect.insort_left (danh sách, phần tử, bắt đầu, kết thúc)

Phương thức này giống với phương thức insort (). Sự khác biệt duy nhất là, nếu phần tử đã có mặt, nó sẽ chèn ở vị trí ngoài cùng bên trái để giữ cho danh sách được sắp xếp.

Phương thức bisect.insort_right (danh sách, phần tử, bắt đầu, kết thúc)

Phương thức này hoàn toàn giống với phương thức insort ().

Mã mẫu

import bisect
my_list = [11, 25, 36, 47, 56, 69, 69, 69, 78, 78, 91, 102, 120]
print('Correct Location to insert 53 is: ' + str(bisect.bisect(my_list, 53, 0, len(my_list))))
print('Correct right Location to insert 69 is: ' + str(bisect.bisect_right(my_list, 69, 0, len(my_list))))
print('Correct left Location to insert 69 is: ' + str(bisect.bisect_left(my_list, 69, 0, len(my_list))))
bisect.insort(my_list, 59, 0, len(my_list))
print(my_list)
bisect.insort_left(my_list, 78, 0, len(my_list))
print(my_list)

Đầu ra

Correct Location to insert 53 is: 4
Correct right Location to insert 69 is: 8
Correct left Location to insert 69 is: 5
[11, 25, 36, 47, 56, 59, 69, 69, 69, 78, 78, 91, 102, 120]
[11, 25, 36, 47, 56, 59, 69, 69, 69, 78, 78, 78, 91, 102, 120]