python 小知识

这篇博客探讨了Python中的堆排序算法heapq,并展示了如何使用bisect模块进行二分查找。通过示例代码,解释了heapq的heappush、heappop等方法,以及bisect_left和bisect_right的区别。同时,还介绍了自定义类实现比较操作并在堆中使用的方法。
摘要由CSDN通过智能技术生成
import bisect as bs

arr=[1,2,3,3,3,5,6]
print(bs.bisect(arr,3))
print(bs.bisect_left(arr,3))
print(bs.bisect_right(arr,3))


print(bs.bisect(arr,4))
print(bs.bisect_left(arr,4))
print(bs.bisect_right(arr,4))

5
2
5
5
5
5
import heapq as hp
class Xxm:
    def __init__(self,aa,strr):
        self.a=aa
        self.ss=strr
    def __lt__(self,other):
        return self.ss>=other.ss
def printXxm(arr1):
    for i in arr1:
        print(i.a,i.ss)
arr=[]
hp.heappush(arr,Xxm(0,"aaaa"))
hp.heappush(arr,Xxm(2,"bbb"))
hp.heappush(arr,Xxm(4,"ddd"))

hp.heappush(arr,Xxm(6,"c"))

printXxm(arr)



arr = []
arr.append(Xxm(0,"aaaa"))
arr.append(Xxm(2,"dd"))
arr.append(Xxm(4,"ccc"))

def cmp1(elem1,elem2):
    if elem1.ss<elem2.ss:
        return -1
    elif elem1.ss>elem2.ss:
        return 1
    else:
        return 0
printXxm(arr)
arr.sort()
printXxm(arr)

4 ddd
6 c
2 bbb
0 aaaa
0 aaaa
2 dd
4 ccc
2 dd
4 ccc
0 aaaa
import heapq as hp

arr=[]
hp.heapify(arr)
hp.heappush(arr,1)
hp.heappush(arr,3)
hp.heappush(arr,-2)

print(arr)

hp.heappop(arr)
print(arr)

hp.heappop(arr)
print(arr)

hp.heappushpop(arr,999)
print(arr)


class Xxm:
    def __init__(self,a,b):
        self.aa=a
        self.bb=b
    def __lt__(self,other):
        return self.bb<other.bb

arr1=[]
hp.heappush(arr1,Xxm(1,3))
hp.heappush(arr1,Xxm(3,2))
hp.heappush(arr1,Xxm(4,0))

tmp=hp.heappop(arr1)
# tmp=
# print(hp.heappop(arr1))
print(tmp.aa,tmp.bb)
for i in range(len(arr1)):
    print(arr1[i].aa,arr1[i].bb)

[-2, 3, 1]
[1, 3]
[3]
[999]
4 0
3 2
1 3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值