在处理数据比较多的时候,适用的一种排序方法
#!/usr/bin/python # coding:utf-8 class SQList: def __init__(self,list=None): self.r=list def swap(self,i,j): temp=self.r[i] self.r[i]=self.r[j] self.r[j]=temp def heap_sort(self): length =len(self.r) i=int(length/2) while(i>=0): print ("in the heap_sort, length=%d , i =%d" % (length,i)) self.heap_adjust(i,length-1) i -=1 j=length-1 while j>0: print ("in the heap_sort, length=%d , j=%d" % (length,j)) self.swap(0,j) self.heap_adjust(0,j-1) j -=1 def heap_adjust(self,s,m): list=self.r temp=list[s] i = 2*s print ("in the heap_adjust, s=%d , m =%d i =%d" % (s,m,i)) while i<=m: if i<m and list[i]< list[i+1]: i +=1 if temp >=list[i]: break list[s]=list[i] s=i i *=2 list[s]=temp print("after i=%d, the list is %s" % (i,self.r)) def __str__(self): ret="" for i in self.r: ret +=" %s" % i return ret if __name__ == '__main__': sqlist = SQList([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]) print(sqlist) sqlist.heap_sort() print(sqlist)