马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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轮排序,这也太"冤"了点,
鸡尾酒排序就是用来干这个的。
下面看看鸡尾酒排序的过程:
>>>待更新<<< |