title: ‘排序算法:冒泡排序’
date: 2019-12-22 16:08:39
categories:
- 算法导论
tags: - 算法导论
冒泡排序
普通冒泡排序
# 普通冒泡排序
def sort(num:[])->[]:
'''
冒泡排序,不稳定算法,依次比较两个元素,如果前一个元素大于后一个元素,进行交换
:param num:
:return:
'''
N = len(num)
for i in range(N):
for j in range(i+1,N):
if(num[i]>num[j]):
temp = num[i]
num[i] = num[j]
num[j] = temp
return num
print(sorted([3,2,1,5]))
改进冒泡排序
# 改进冒泡排序:
def sort1(num:[])->[]:
'''
改进冒泡排序,对于每一个点的判断有一个标识符
:param num:
:return:
'''
N = len(num)
change = 1
for i in range(N):
if(change == 0):
return num
change = 0
for j in range(i+1,N):
if(num[i]>num[j]):
change = 1
temp = num[i]
num[i] = num[j]
num[j] = temp
return num
print(sort1([3,2,1,5]))
鸡尾酒冒泡排序
#鸡尾酒冒泡变种
def cocktail(num:[])->[]:
left = 0
right = len(num)-1
while(left<right):
for i in range(left,right):
if(num[i]>num[i+1]):
temp = num[i]
num[i] = num[i+1]
num[i+1] = temp
right-=1
j = right
while(j>left):
if (num[j-1] > num[j]):
temp = num[j-1]
num[j-1] = num[j]
num[j] = temp
j-=1
return num
print(cocktail([3,2,1,5]))