сортировка кусочков пифа и списков

Я пытаюсь сделать следующую проблему

Цель: Внедрение алгоритма quicheSort (не на месте). Сначала он использует quickSort с использованием срединной оси 3, пока не достигнет предела рекурсии, ограниченного int (math.log (N, 2)). Здесь N – длина исходного списка для сортировки. Как только он достигнет этого предела глубины, он переключится на использование heapSort вместо quicksort.

import heapSort # heapSort import qsPivotMedian3 from math import* # log2 (for quicksort depth limit) import testSorts # run (for individual test run) def quicheSortRec(lst, limit): """ A non in-place, depth limited quickSort, using median-of-3 pivot. Once the limit drops to 0, it uses heapSort instead. """ if len(lst) == 0: return lst() elif limit > 0: quickSort(lst) else: heapSort(lst) def quicheSort(lst): """ The main routine called to do the sort. It should call the recursive routine with the correct values in order to perform the sort """ if len(lst)== 0: return list() else: limit = float(log(len(lst),[2])) return quicheSortRec(lst,limit) if __name__ == "__main__": testSorts.run('quicheSort') 

Проблема, с которой я столкнулась с этим кодом, – мои ограничения. Я должен установить предел как int (log (N, [2])). Тем не менее, python продолжает говорить мне, что необходим float. Поэтому, когда я меняю int на float, он все еще продолжает говорить мне, что нужен float.

След –

 le "/Users/sps329/Desktop/quicheSort.py", line 44, in <module> testSorts.run('quicheSort') File "/Users/sps329/Desktop/testSorts.py", line 105, in run performSort(sortType, data, N) File "/Users/sps329/Desktop/testSorts.py", line 71, in performSort result = sortType.function(dataSet.data) File "/Users/sps329/Desktop/quicheSort.py", line 40, in quicheSort limit = float(log(len(lst),[2])) TypeError: a float is required 

One Solution collect form web for “сортировка кусочков пифа и списков”

  limit = float(log(len(lst),[2])) 

[2] – список из 1 элемента. Почему вы делаете 1-элементный список? Вам просто нужно 2 здесь. Я думаю, возможно, это должно было быть математическим обозначением для пола, но напольное покрытие 2 тоже не имеет большого смысла.

Python - лучший язык программирования в мире.