bisect算法用于查找列表中的位置,可以在其中插入数据以使列表保持排序。Python有一个称为bisect的模块。使用此模块,我们可以使用二等分算法。
要使用此模块,我们应该使用-导入它
import bisect
有一些二分法相关的操作。这些是-
此方法用于在排序列表中查找位置,可以在其中放置数字,并且列表保持排序。如果该元素已经存在,它将返回最右边的位置,可以在其中插入数字。
该方法与方法相同bisect()
。唯一的区别是,如果该项已经存在,则此方法将返回最左侧的位置以插入数据。
该方法与该bisect()
方法完全相同。
在将元素插入正确位置后,此方法用于获取排序列表。如果元素已经存在,它将在最右边插入以保持列表排序。
该方法与insort()
方法相同。唯一的区别是,如果元素已经存在,它将插入到最左侧,以使列表保持排序。
该方法与insort()
方法完全相同。
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)
输出结果
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]