classListNode():def__init__(self,val):
self.val = val
self.next=NoneclassSolution():defmergesortoflist(self,node):ifnot node ornot node.next:return node
midnode = node
left = ListNode(0)
resL = left
right = ListNode(0)
resR = right
node = node.nextwhile node:if midnode.val < node.val:
right.next= node
right = right.nextelse:
left.next= node
left = left.next
node = node.next
left.next=None
right.next=None
L = self.mergesortoflist(resL.next)
R = self.mergesortoflist(resR.next)
midnode.next= R
ifnot L:return midnode
else:
temp = L
while temp.next:
temp = temp.next
temp.next= midnode
return L
a =[2,5,3,8,7,0,1,5,4,6,1]
nh = ListNode(0)
n = nh
for tmp in a:
tmpn = ListNode(tmp)
n.next= tmpn
n = tmpn
nh = nh.next
quicksort = Solution()
nhsort = quicksort.mergesortoflist(nh)
asort =[]
tmpn = nhsort
while tmpn isnotNone:
asort.append(tmpn.val)
tmpn = tmpn.nextprint(a)print(asort)# --------------------------------------------输出---------------------------------------[2,5,3,8,7,0,1,5,4,6,1][0,1,1,2,3,4,5,5,6,7,8]
数组快速排序
defquickSorst(array):iflen(array)<2:return array
else:
pivot = array[0]
less =[i for i in array[1:]if i <= pivot]
greater =[i for i in array[1:]if i > pivot]return quickSorst(less)+[pivot]+ quickSorst(greater)
a = quickSorst([2,5,3,8,7,0,1,5,4,6,1])print(a)# --------------------------------------------输出---------------------------------------[0,1,1,2,3,4,5,5,6,7,8]
文章目录单链表快速排序数组快速排序单链表快速排序class ListNode(): def __init__(self,val): self.val = val self.next = Noneclass Solution(): def mergesortoflist(self,node): if not node or not node.next: return node midnode = no