Найти - Пользователи
Полная версия: Проблема с пирамидальной сортировкой
Начало » Python для новичков » Проблема с пирамидальной сортировкой
1
ahpex
Доброго времени суток! Вопрос в следующем:
Есть данная реализация пирамидальной сортировки. Все работает, но сортирует начиная со 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
o7412369815963
В википедии есть пример для пиона

ahpex
b = a[i]
			a[i] = a[j]
			a[j] = b
в питоне так не пишут, так надо:
a[i], a[j] = a[j], a[i]
ahpex
Спасибо. Но мне нужно отследить почему не учитывается 1й эл-т в моем коде.
Griffon
Первый элемент, он же нулевой a(0). Собственно потому и не учитывается.
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