К сожалению, этот метод не дает должного результата.
Пожалуйста, поправьте меня, скажите, где я ошибаюсь (я много пробовал, но так и не понял). Пожалуйста, объясните и предложите необходимые изменения.
Код: Выделить всё
class Node:
def __init__(self, value):
self.value = value
self.next = None
self.prev = None
class DoublyLinkedList:
def __init__(self):
self.head = None
self.tail = None
self.next = None
self.prev = None
self.count = 0
Код: Выделить всё
def bubble_sort(self):
if self.head is None:
return f"Linked list is empty!"
elif self.head.next is None:
return self.head
else:
left = self.head
right = self.head.next
while True:
flag = 'sorted'
while True:
if right is None:
break
if left.value > right.value:
flag = 'unsorted'
if (left == self.head) and (right == self.tail): #only two nodes
self.tail = left
self.head = right
elif left == self.head: #edge case of left
self.head = right
elif right == self.tail: #edge case of right
self.tail = left
temp_right = right.next
temp_left = left.prev
left.next = temp_right
left.prev = right
right.next = left
right.prev = temp_left
right = left.next
else:
left = left.next
right = right.next
left = self.head
right = self.head.next
if flag == 'sorted':
return self
Подробнее здесь: https://stackoverflow.com/questions/792 ... ot-working
Мобильная версия