鱼C论坛

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

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

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

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

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

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轮排序,这也太"冤"了点,
鸡尾酒排序就是用来干这个的。
下面看看鸡尾酒排序的过程:

>>>待更新<<<
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 01:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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