排序

快速排序:

def sort(a,l,r):
    if l>=r:
        return
    left=l
    right=r
    base=a[l]
    while left!=right:
        while left!=right and a[right] > base:
            right-=1
        a[left]=a[right] 
        
        while left!=right and a[left] <= base:
            left+=1
        a[right]=a[left]
    a[left]=base
    print(right,left)
    sort(a,l,left-1)
    sort(a,right+1,r)

b=[2,43,12,1,3,5,9,12,23,1]
sort(b,0,len(b)-1)
print(b)

链表

class node:
    def __init__(self,data,next=None):
        self.data=data
        self.next=next

class linked_list:
    def __init__(self,node):
        self.node=node
    def insert(self,node):
        p=self.node
        while p:  
            i=p          
            p=p.next
        i.next=node
    def listed(self):
        p=self.node
        while p:            
            print(p.data)
            p=p.next


b=linked_list(node('1',node('2',node('3'))))
b.insert(node('4'))
b.insert(node('5'))
print(b.listed())

堆排序

class Sort:
    def __init__(self,li):
        self.li=li
    def insert(self,a):
        self.li.append(a)
        q=len(self.li)-1 #a下标
        while q>0:
            temp_q=q
            if q%2 == 1 and self.li[q] > self.li[int((q-1)/2)]:   #左节点
                p=self.li[int((q-1)/2)]   #父节点值
                self.li[int((q-1)/2)]=self.li[int(q)]
                self.li[q]=p  
                q=int((q-1)/2) #更新节点下标
            elif q%2 == 0 and self.li[q] > self.li[int((q-2)/2)]:   #右节点
                p=self.li[int((q-2)/2)]   #父节点值
                self.li[int((q-2)/2)]=self.li[int(q)]
                self.li[q]=p 
                q=int((q-2)/2) #更新节点下标
            else:
                break
b=[1]
c=Sort(b)
c.insert(4)
c.insert(3)
c.insert(6)
c.insert(2)
print(b)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值