码迷,mamicode.com
首页 > 编程语言 > 详细

Python 冒泡排序、归并排序、快速排序

时间:2019-01-16 20:42:20      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:循环   冒泡排序   info   ==   归并排序   ftl   nbsp   中间   参数传递   

冒泡排序

原理:

技术分享图片

代码:

def bubble_sort2(arr):
for j in range(len(arr) - 1, 0, -1): # [n-1, n-2, ....2, 1]
for i in range(0, j):
if arr[i] > arr[i + 1]:
arr[i], arr[i + 1] = arr[i + 1], arr[i]


bubble_sort2(arr)
print(arr) # [1, 3, 4, 7, 8, 34, 67]

归并排序

原理:

技术分享图片

 

代码:

#分解方法
def fenjie(arraylist):
arraylen = len(arraylist)
if arraylen == 1:
return arraylist
if arraylen < 1:
return []
#获取中间索引值
zjz=(arraylen>>1)
#获取左半部分
listleft = fenjie(arraylist[:zjz])
#获取右半部分
listright = fenjie(arraylist[zjz:])
#将参数传递给合成方法并调用该方法
return hecheng(listleft,listright)

#合成方法
def hecheng(listleft,listright):
leftIndex = 0
rightIndex = 0
leftlen = len(listleft)
rightlen = len(listright)
retlist=[]
# 循环比较
while leftIndex<leftlen and rightIndex<rightlen:
if listleft[leftIndex] < listright[rightIndex]:
retlist.append(listleft[leftIndex])
leftIndex += 1
else:
retlist.append(rightlist[rightIndex])
rightIndex +=1
if leftIndex < leftlen:
while leftIndex < leftlen:
retlist.append(listleft[leftIndex])
leftIndex += 1
if rightIndex <rightlen:
while rightIndex < rightlen:
retlist.append(listright[rightIndex])
rightIndex +=1

return retlist

 

快速排序:

 

Python 冒泡排序、归并排序、快速排序

标签:循环   冒泡排序   info   ==   归并排序   ftl   nbsp   中间   参数传递   

原文地址:https://www.cnblogs.com/ziyun20160613/p/10279093.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!