python链表需使用快速排序输出ascending order结果,写完后找不到代码问题出在哪,求解答,感恩!
import random
class Node:
def init(self, element,pointer):
self.element = element
self.pointer = pointer
class SinglyLinkedList:
def init(self):
self.head = None
self.tail = None
self.size = 0
def __len__(self):
return self.size
def is_empty(self):
return self.size == 0
def first(self):
if self.is_empty():
print("Queue is empty.")
else:
return self.head.element
def insert(self,data):
node = Node(data,None)
if self.is_empty():
self.head = node
else:
self.tail.pointer = node
self.tail = node
self.size +=1
def remove(self):
if self.is_empty():
print("Queue is empty.")
else:
answer = self.head.element
self.head = self.head.pointer
self.size -=1
if self.is_empty():
self.tail = None
return answer
def getData(self,i):
count = -1
p = self.head
while count < i-1:
p = p.pointer
count+=1
return p.element
def setData(self,i,element):
count = -1
p = self.head
while count < i -1:
p = p.pointer
count+=1
p.element = element
def swapData(self,i,j):
mid = self.getData(j)
self.setData(j,self.getData(i))
self.setData(i,mid)
def quick_sort(self,node,size):
if node != self.head:
return "Invalid input!"
else:
if self.size == 1:
return node
elif self.size == 2:
if node.element <= node.pointer.element:
return node
else:
answer = node.element
node.element = node.pointer.element
node.pointer.element = answer
return node
else:
i = 0
j = self.size -1
if i>=j:
pass
key = node.element
while i<j:
while i<j and self.getData(j)>=key:
j =j-1
self.swapData(i,j)
while i<j and self.getData(i)<=key:
i= i+1
self.swapData(j,i)
self.setData(i,key)
self.quick_sort(0, i-1)
self.quick_sort(j+1, self.size -1)
报错如下:
-17
-44
-14
-44
-8
-11
-42
-42
-19
-31
-45
-44
-30
-24
-7
47
70
82
98
52
61
11
9
18
59
75
51
8
39
50
6
80
89
60
66
33
41
29
40
2
87
12
-7
9
99
28
90
-3
84
83