Advertisement
Lyuben_Andreev

FunctorsSort

Aug 13th, 2024
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.95 KB | Software | 0 0
  1. from abc import ABC, abstractmethod
  2.  
  3.  
  4. # Интерфейс за стратегията
  5. class SortingStrategy(ABC):
  6.     @abstractmethod
  7.     def sort(self, data):
  8.         pass
  9.  
  10.  
  11. # Имплементация на MergeSort стратегията
  12. class MergeSortStrategy(SortingStrategy):
  13.     def sort(self, data):
  14.         print("Data is Merge sorted")
  15.         return sorted(data)  # Примерна имплементация на Merge Sort (тук е опростено)
  16.  
  17.  
  18. # Имплементация на HeapSort стратегията
  19. class HeapSortStrategy(SortingStrategy):
  20.     def sort(self, data):
  21.         print("Data is Heap sorted")
  22.         return sorted(data)  # Примерна имплементация на Heap Sort (тук е опростено)
  23.  
  24.  
  25. # Имплементация на QuickSort стратегията
  26. class QuickSortStrategy(SortingStrategy):
  27.     def sort(self, data):
  28.         print("Data is Quick sorted")
  29.         return sorted(data)  # Примерна имплементация на Quick Sort (тук е опростено)
  30.  
  31.  
  32. # Клас, който избира стратегията
  33. class Sorter:
  34.     def __init__(self, strategy: SortingStrategy):
  35.         self._strategy = strategy
  36.  
  37.     def set_strategy(self, strategy: SortingStrategy):
  38.         self._strategy = strategy
  39.  
  40.     def sort(self, data):
  41.         return self._strategy.sort(data)
  42.  
  43.  
  44. # Клиентски код
  45. data = [34, 7, 23, 32, 5, 62]
  46.  
  47. # Използване на MergeSort
  48. sorter = Sorter(MergeSortStrategy())
  49. sorted_data = sorter.sort(data)
  50. print(f"Sorted data using MergeSort: {sorted_data}")
  51.  
  52. # Превключване към QuickSort
  53. sorter.set_strategy(QuickSortStrategy())
  54. sorted_data = sorter.sort(data)
  55. print(f"Sorted data using QuickSort: {sorted_data}")
  56.  
  57. # Превключване към HeapSort
  58. sorter.set_strategy(HeapSortStrategy())
  59. sorted_data = sorter.sort(data)
  60. print(f"Sorted data using HeapSort: {sorted_data}")
  61.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement