пишу merge sort algorithm по статье из википедии сортировка слиянием. ту часть, где в статье внизу написано на псевдокоде.
мой код:
m = [4, 3, 5, 1, 6, 9 , 7 , 8] def mergesort (m): left = [] right = [] result = [] if len(m) <= 1: return m else: middle = len(m) / 2 for i in range(0, middle): left.append(m[i]) for i in range(middle, len(m)): right.append(m[i]) left = mergesort(left) right = mergesort(right) result = merge(left, right) return result def merge(left, right): result = [] while len(left) > 0 and len(right) > 0: if left[0] <= right[0]: result.append(left[0]) left.pop(0) else: result.append(right[0]) right.pop(0) if len(left) > 0: result.append(left) if len(right) > 0: result.append(right) return result b = mergesort(m) print b
результат:
[1, 3, 6, 7, [4], [8], [[5]], [[[9]]]]
собственно, половина исходного массива почему то возвращается с многократно вложенными списками. интересно почему.