Derevo
Опубликовано 2 месяца назад
Читать дальше...
from abc import ABC, abstractmethod
# Интерфейс стратегии
class Strategy(ABC):
@abstractmethod
def sort(self, data):
pass
# Конкретные стратегии
class BubbleSortStrategy(Strategy):
def sort(self, data):
print("Sorting using Bubble Sort")
for i in range(len(data)):
for j in range(0, len(data)-i-1):
if data[j] > data[j+1]:
data[j], data[j+1] = data[j+1], data[j]
class QuickSortStrategy(Strategy):
def sort(self, data):
print("Sorting using Quick Sort")
self.quick_sort(data, 0, len(data) - 1)
def quick_sort(self, data, low, high):
if low < high:
pi = self.partition(data, low, high)
self.quick_sort(data, low, pi - 1)
self.quick_sort(data, pi + 1, high)
def partition(self, data, low, high):
pivot = data[high]
i = low - 1
for j in range(low, high):
if data[j] <= pivot:
i = i + 1
data[i], data[j] = data[j], data[i]
data[i + 1], data[high] = data[high], data[i + 1]
return i + 1
# Контекст
class SortingContext:
def __init__(self, strategy: Strategy):
self._strategy = strategy
def set_strategy(self, strategy: Strategy):
self._strategy = strategy
def sort(self, data):
self._strategy.sort(data)
# Клиентский код
data = [5, 2, 9, 1, 5, 6]
context = SortingContext(BubbleSortStrategy())
context.sort(data)
print(data) # [1, 2, 5, 5, 6, 9]
context.set_strategy(QuickSortStrategy())
data = [3, 7, 8, 5, 2, 1, 9, 5, 4]
context.sort(data)
print(data) # [1, 2, 3, 4, 5, 5, 7, 8, 9]
Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14мЗапрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14Запрещено: 14
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo
@Derevo