快速排序
class TreeNode(object):
def __init__(self,val,nex):
self.val=val
self.next=nex
def linksort(s,e):
if s==e:
return
key=s.val
p=s
q=s.next
while q!=e:
if q.val<key:
p=p.next
p.val,q.val=q.val,p.val
q=q.next
p.val,s.val=s.val,p.val
linksort(s,p)
linksort(p.next,e)
node5=TreeNode(4,None)
node4=TreeNode(6,node5)
node3=TreeNode(2,node4)
node2=TreeNode(3,node3)
node1=TreeNode(7,node2)
head=TreeNode(5,node1)
linksort(head,None)
p=head
while p:
print p.val
p=p.next
归并排序
class TreeNode(object):
def __init__(self,val,nex):
self.val=val
self.next=nex
def mergesort(head):
if not head or not head.next:
return head
s=head
f=head.next
while f and f.next:
s=s.next
f=f.next.next
t=s.next
s.next=None
l=mergesort(head)
r=mergesort(t)
dummy=TreeNode(0,None)
pre=dummy
while l and r:
if l.val<r.val:
pre.next=l
pre=l
l=l.next
else:
pre.next=r
pre=r
r=r.next
if not l:
pre.next=r
if not r:
pre.next=l
return dummy.next
node5=TreeNode(4,None)
node4=TreeNode(6,node5)
node3=TreeNode(2,node4)
node2=TreeNode(3,node3)
node1=TreeNode(7,node2)
head=TreeNode(5,node1)
head=mergesort(head)
p=head
while p:
print p.val
p=p.next