Найти - Пользователи
Полная версия: проблема в сортировке слиянием
Начало » Центр помощи » проблема в сортировке слиянием
1
alex28746
Еще раз здравствуйте. Столкнулся с такой проблемой когда писал алгоритм слияния. Задумка такая, при указывании в параметрах функции(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
                
изначально поставил чтобы сортировало от максимального к минимальному.
но при изменении на 0
print a.mergeSort(lista,0)
алгоритм не работает,а точнее он не склеивает списки. Может кто знает в чем проблема?
прошу прощения за быдло код
terabayt
            left = self.mergeSort(L[:i], way)
            right = self.mergeSort(L[i:], way)
alex28746
Благодарю!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB