python算法实践6 堆排序
#堆排序
def Heapify(mylist, start, end):
left = 0
right = 0
maxv = 0
left = start * 2
right = start * 2 + 1
while left <= end:
maxv = left
if right <= end:
if mylist[left] < mylist[right]:
maxv = right
else:
maxv = left
if mylist[start] < mylist[maxv]:
tmp = mylist[maxv]
mylist[maxv] = mylist[start]
mylist[start] = tmp
start = maxv
else:
break
left = start * 2
right = start * 2 + 1
def BuildHeap(mylist):
size = len(mylist)
i = (size -1) // 2;
while i >= 0:
Heapify(mylist, i, size - 1)
i = i - 1
def HeapSort(mylist):
BuildHeap(mylist)
i = len(mylist) - 1
while i >= 0:
tmp = mylist[0]
mylist[0] = mylist[i]
mylist[i] = tmp
Heapify(mylist, 0, i - 1)
i = i - 1
mylist0 = [11, 23, 1, 24, 112, 200, 9, 32]
HeapSort(mylist0)
print(mylist0)
相关文档:
python string和PyQt的QString的区别 以下在Python2.6和PyQt4.4.4 for
Python2,6环境下讨论: Python中有两种有关字符的类型:Python string object和Python Unicode
object。主要使用Python string object进行数据输入输出。 PyQt中与之相对应的字符有关类
python string和PyQt的QString的区别
以下在Python2.6和PyQt4 ......
2008-12-21
python类型转换、数值操作
关键字: python类型转换、数值操作
python类型转换
Java代码
函数 描述
int(x [,base ])   ......
#shell排序
def ShellPass(mylist, d):
size = len(mylist)
i = d
while i < size:
if mylist[i] < mylist[i - d]:
tmp = mylist[i]
j = i - d
mylist[j + d] = mylist[j]
j = j - d
while j >= 0 and mylist[j] > ......
#冒泡排序
def BubbleSort(mylist):
n = len(mylist)
i = 0
j = 0
bExchange = False
for i in range(1, n):
bExchange = False
j = n - 1
while j >= i:
if mylist[j] < mylist[j - 1]:
tmp = mylist[j]
myli ......
#快速排序
def Partition(mylist, low, high):
tmp = mylist[low]
while low < high:
while low < high and mylist[high] >= tmp:
high = high - 1
if low < high:
mylist[low] = mylist[high]
low = low + 1
while low < hi ......