中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
如有瑕疵还望批评指正。