单链表快速排序python
时间: 2023-12-23 14:28:12 浏览: 175
快速排序是一种常用的排序算法,它可以在平均情况下以O(nlogn)的时间复杂度对一个数组进行排序。下面是使用Python实现单链表快速排序的示例代码:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def partition(head, end):
pivot = head.val
slow = head
fast = head.next
while fast != end:
if fast.val < pivot:
slow = slow.next
slow.val, fast.val = fast.val, slow.val
fast = fast.next
slow.val, head.val = head.val, slow.val
return slow
def quickSort(head, end):
if head != end:
pivot = partition(head, end)
quickSort(head, pivot)
quickSort(pivot.next, end)
def sortList(head):
quickSort(head, None)
return head
```
这段代码中,我们定义了一个`ListNode`类来表示链表的节点。`partition`函数用于将链表划分为两部分,并返回划分点的位置。`quickSort`函数使用递归的方式对链表进行快速排序。最后,`sortList`函数是对外的接口,用于调用快速排序算法。
请注意,这只是一个示例代码,你需要根据实际情况来构建你的链表,并调用`sortList`函数来进行排序。
阅读全文