Advertisement

链表中的快排以及归并排序

阅读量:

链表快排

采用快速排序算法对单链表进行排序操作时,其核心在于partition函数的设计。由于单链表不具备反向遍历的能力,因此无法使用传统的头尾双指针相互靠近的partition方式,而需采用从链表头部出发的双指针实现方法,关于两种具体的partition函数实现方式可参考:快排的两种partition函数

相较于数组形式的快速排序,链表快排在partition函数中的差异主要体现在遍历终止条件以及递归终止条件的设定上。

复制代码
    # 链表快排
    class Node:
    def __init__(self, val):
        self.val = val
        self.next = None
    
    def bulid_list(data_list):
    head = Node(0)
    cur = head
    for val in data_list:
        cur.next = Node(val)
        cur = cur.next
    return head.next
    
    def print_list(root):
    while root:
        print(root.val)
        root = root.next

全部评论 (0)

还没有任何评论哟~