Форум сайта python.su
0
Доброго времени суток! Вопрос в следующем:
Есть данная реализация пирамидальной сортировки. Все работает, но сортирует начиная со 2го элемента.
Помогите отследить ошибку. Заранее спасибо!
def HeapSort(): a = [45, 13, 24, 31, 11, 28, 49, 40, 19, 27] k = len(a) - 1 def ConSwap(i, j): if a[i] < a[j]: b = a[i] a[i] = a[j] a[j] = b def Conflict(i, k): j = 2 * i if j == k: ConSwap(i, j) elif j < k: if a[j + 1] > a[j]: j += 1 ConSwap(i, j) Conflict(j, k) def SortTree(i): if i <= k / 2.0: SortTree(2 * i) SortTree(2 * i + 1) Conflict(i, k) SortTree(1) while k > 1: i = 0 while i <= k: ConSwap(k, 1) Conflict(1, k - 1) i += 1 k -= 1 return a
Офлайн
32
В википедии есть пример для пиона
ahpexв питоне так не пишут, так надо:b = a[i] a[i] = a[j] a[j] = b
a[i], a[j] = a[j], a[i]
Отредактировано o7412369815963 (Фев. 9, 2013 09:35:27)
Офлайн
0
Спасибо. Но мне нужно отследить почему не учитывается 1й эл-т в моем коде.
Офлайн
11
Первый элемент, он же нулевой a(0). Собственно потому и не учитывается.
Отредактировано Griffon (Фев. 9, 2013 13:21:34)
Офлайн