python链表快速排序问题

想通过对list快速排序的方法,实现对链表的快速排序,主函数设置成了这个样子,但是为什么递归不起来呢?谢谢!

img

1、在调用函数 quick_sort 的时候,第一个参数应该是整个链表的头结点,但是直接传入了一个节点(node)。

2、在递归调用的时候,没有传入 node 这个参数,所以递归调用的时候函数的参数全部都是默认值。

3、在递归调用的时候,传入的是 high=i-1,low=1,而不是 high=i-1,low=low 和 high=high,low=i+1。

def quick_sort(node, low=1, high=None):


if high is None:
    # 计算链表的长度
high = count_node(node)
i = low
j = high
if i >= j or i < 0:
return node
key = get_node(node, i).element
while i < j:
while i < j and get_node(node, j).element >= key:
j -= 1
while i < j and get_node(node, i).element < key:
i += 1
# 交换节点
swap_node(get_node(node, j), get_node(node, i))
# 设置新的 pivot
get_node(node, low).element = get_node(node, i).element
get_node(node, i).element = key
# 递归调用
quick_sort(node, low=low, high=i-1)
quick_sort(node, low=i+1, high=high)
return node

仅供参考,望采纳。