Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 8, 2013 15:59:07

ahpex
Зарегистрирован: 2013-01-19
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с пирамидальной сортировкой

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

Офлайн

#2 Фев. 9, 2013 09:34:37

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Проблема с пирамидальной сортировкой

В википедии есть пример для пиона

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)

Офлайн

#3 Фев. 9, 2013 12:22:00

ahpex
Зарегистрирован: 2013-01-19
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с пирамидальной сортировкой

Спасибо. Но мне нужно отследить почему не учитывается 1й эл-т в моем коде.

Офлайн

#4 Фев. 9, 2013 13:20:48

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

Проблема с пирамидальной сортировкой

Первый элемент, он же нулевой a(0). Собственно потому и не учитывается.



Отредактировано Griffon (Фев. 9, 2013 13:21:34)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version