您的位置:首页 > 编程语言 > Python开发

用Python来写5种排序方法

2014-03-13 13:55 363 查看
中C语言的毒太深了,目前在自学Python,一时兴起用Python写了五种排序

1.冒泡排序:

def bubble_sort(l):
for i in range(len(l)-1,0,-1):
for j in range(0,i):
if l[j] > l[j+1]:
l[j],l[j+1]=l[j+1],l[j]
2.选择排序:

def select_sort(l):
for i in range(len(l)):
index = i
for j in range(i,len(l)):
if l[j] < l[index]:
index = j
l[index],l[i] = l[i],l[index]
3.插入排序:

def insert_sort(l):
for i in range(1,len(l)):
tmp = l[i]
for j in range(i-1,-1,-1):
if tmp > l[j]:
j = j+1
break
l[j+1] = l[j]
l[j]=tmp


4.归并排序:

def merge_sort(l,begin,end):
if (begin >= end):
return
mid = (begin+end)/2
merge_sort(l,begin,mid)
merge_sort(l,mid+1,end)
merge(l,begin,mid,end)
li = range(10)
def merge(l,begin,mid,end):
for i in range(begin,end+1):
li[i] = l[i]
i = begin
j = mid+1
k = begin
while i <= mid and j <= end:
if (li[i] > li[j]):
l[k] = li[j]
k += 1
j += 1
else:
l[k] = li[i]
k += 1
i += 1
while i <= mid:
l[k] = li[i]
k += 1
i += 1
while j <= end:
l[k] = li[j]
k += 1
j += 1



5.快速排序:

def quick_sort(l,left,right):
if left >= right:
return
pos = parition(l,left,right)
quick_sort(l,left,pos-1)
quick_sort(l,pos+1,right)

def parition(l,left,right):
j = left
for i in range(left+1, right+1):
if l[i] > l[left]:
j += 1
l[i],l[j] = l[j],l[i]
l[left],l[j] = l[j],l[left]
return j


如有瑕疵还望批评指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: