Форум сайта python.su
Еще раз здравствуйте. Столкнулся с такой проблемой когда писал алгоритм слияния. Задумка такая, при указывании в параметрах функции(way) 0 алгоритм должен сортировать от минимального к максимальному значению, а при указании 1 наоборот.
class Slist: def __init__(self,lista): self.len = len(lista) def mergeSort(self, L,way=1): """0 - ot min do max 1 - ot max do min""" if len(L) > 1: i = len(L)/2 left = self.mergeSort(L[:i]) right = self.mergeSort(L[i:]) print way return self.__klej(left,right,way) else: return L def __klej(self,left,right,way): result = [] ileft = 0 iright = 0 while True: if ileft == len(left): result.extend(right[iright:]) return result if iright == len(right): result.extend(left[ileft:]) return result if way == 0: if left[ileft] >= right[iright]: result.append(right[iright]) iright += 1 else: result.append(left[ileft]) ileft += 1 if way == 1: if left[ileft] <= right[iright]: result.append(right[iright]) iright += 1 else: result.append(left[ileft]) ileft += 1
print a.mergeSort(lista,0)
Отредактировано alex28746 (Апрель 26, 2015 22:34:22)
Офлайн
left = self.mergeSort(L[:i], way) right = self.mergeSort(L[i:], way)
Офлайн
Благодарю!
Офлайн