python实现的一种排序方法

在处理数据比较多的时候,适用的一种排序方法




#!/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)
	


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值