马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
Python 排序方法4:鸡尾酒排序(冒泡排序4)
鸡尾酒排序
冒泡排序的每一轮都是从左到右来比较元素,进行单项的位置交换的,
而鸡尾酒排序是双向的。
举个例子:
这里有一个数列[2,3,4,5,6,7,8,1],要对其进行从小到大的排序。
要是按以前的代码:def sort(list1):
# 记录最后一次元素交换的位置
lastExchangeIndex = 0
sortBorder = len(list1) - 1
for i in range(len(list1) - 1):
# 默认值为True
isSorted = True
for j in range(sortBorder):
if list1[j] > list1[j+1]:
temp = list1[j]
list1[j] = list1[j+1]
list1[j+1] = temp
# 有元素进行交换,所以设它为False
isSorted = False
# 更新为最后一次交换元素的位置
lastExchangeIndex = j
print(list1)
sortBorder = lastExchangeIndex
if isSorted:
break
list1 = [2, 3, 4, 5, 6, 7, 8, 1]
sort(list1)
print(list1)
把每次排序后的列表打印出来:[2, 3, 4, 5, 6, 7, 1, 8]
[2, 3, 4, 5, 6, 1, 7, 8]
[2, 3, 4, 5, 1, 6, 7, 8]
[2, 3, 4, 1, 5, 6, 7, 8]
[2, 3, 1, 4, 5, 6, 7, 8]
[2, 1, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]
可以发现,元素2,3,4,5,6,7,8已经是有序的了,只有元素1的位置不对,
却还要进行7轮排序,这也太"冤"了点,
鸡尾酒排序就是用来干这个的。
下面看看鸡尾酒排序的过程:
>>>待更新<<< |