鱼C论坛

 找回密码
 立即注册
查看: 2438|回复: 0

[技术交流] Python 排序方法4:鸡尾酒排序(冒泡排序4)

[复制链接]
发表于 2020-3-6 12:57:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Python 排序方法4:鸡尾酒排序(冒泡排序4)


鸡尾酒排序

冒泡排序的每一轮都是从左到右来比较元素,进行单项的位置交换的,
而鸡尾酒排序是双向的。
举个例子:
这里有一个数列[2,3,4,5,6,7,8,1],要对其进行从小到大的排序。
要是按以前的代码:
  1. def sort(list1):
  2.     # 记录最后一次元素交换的位置
  3.     lastExchangeIndex = 0
  4.     sortBorder = len(list1) - 1
  5.     for i in range(len(list1) - 1):
  6.         # 默认值为True
  7.         isSorted = True
  8.         for j in range(sortBorder):
  9.             if list1[j] > list1[j+1]:
  10.                 temp = list1[j]
  11.                 list1[j] = list1[j+1]
  12.                 list1[j+1] = temp
  13.                 # 有元素进行交换,所以设它为False
  14.                 isSorted = False
  15.                 # 更新为最后一次交换元素的位置
  16.                 lastExchangeIndex = j
  17.                 print(list1)

  18.         sortBorder = lastExchangeIndex
  19.         if isSorted:
  20.             break


  21. list1 = [2, 3, 4, 5, 6, 7, 8, 1]
  22. sort(list1)
  23. print(list1)
复制代码

把每次排序后的列表打印出来:
  1. [2, 3, 4, 5, 6, 7, 1, 8]
  2. [2, 3, 4, 5, 6, 1, 7, 8]
  3. [2, 3, 4, 5, 1, 6, 7, 8]
  4. [2, 3, 4, 1, 5, 6, 7, 8]
  5. [2, 3, 1, 4, 5, 6, 7, 8]
  6. [2, 1, 3, 4, 5, 6, 7, 8]
  7. [1, 2, 3, 4, 5, 6, 7, 8]
  8. [1, 2, 3, 4, 5, 6, 7, 8]
复制代码

可以发现,元素2,3,4,5,6,7,8已经是有序的了,只有元素1的位置不对,
却还要进行7轮排序,这也太"冤"了点,
鸡尾酒排序就是用来干这个的。
下面看看鸡尾酒排序的过程:

>>>待更新<<<
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-13 12:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表