我希望你能帮助我完成这个项目,其中需要编写递归合并排序函数以处理链表。以下是我目前所完成的程序(由于只有部分代码让我感到困扰,因此并未放上整段代码)。
....
def merge_sort(self):
len_list,len_list2= 0, 0
list=self.head #first half of linked list
list2=self.divide() #function that makes second half of linked list
#from imput like z = SortedList([46, 27, 93, 91, 23])
#i will get list=46->27->93->None
# list2=91->23->
while list is not None:
len_list+=1
list=list.next
while list2 is not None:
len_list2+=1
list2=list2.next
# in len_list,len_list2 i am storing length of these linked lists
def merge(self,left,right):
result,i,j=None,0,0
while (i<len_list) and (j<len_list2):
if list.data < list2.data:
result.append(list.data) #append is function which appends
list=list.next #nodes
i+=1
else:
result.append(list2.data)
list2=list2.next
j+=1
#some returns should follow but i dont know what to do
我相信这个做法在很多方面都是错误的,我只是试图复制适用于列表的归并排序函数,并将其转换为适用于链表的函数。如果有人能帮我如何实现这一点,而不改变定义的参数(如def merge_sort(self))并向我展示如何递归调用它,我将非常感激。提前谢谢您。 此外,为了将链表分成两半,我应该使用函数divide(self),但如果您知道其他方法,请告诉我。