冒泡排序和鸡尾酒排序(code)

本文通过面向对象的方法实现了冒泡排序和鸡尾酒排序,并对这两种算法进行了优化。通过对排序过程的详细记录,展示了排序算法的工作原理及优化后的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天回顾了下冒泡排序和鸡尾酒排序,用面向对象的方式写了一下,并且优化了代码,记录一下~


一、冒泡排序

# 冒泡排序
class BubbleSort(object):
    def __init__(self, data_list):
        self.data_list = data_list
        self.length = len(data_list)
    # 简单粗暴的排序方式
    def b_sort(self):
        data_list = list(self.data_list)
        for i in range(self.length):
            print('**************第%s轮循环**************' % (i + 1))
            index_len = self.length
            for index in range(index_len - 1):
                print(index)
                if data_list[index] > data_list[index + 1]:
                    data_list[index], data_list[index + 1] = data_list[index + 1], data_list[index]
        return data_list

    # 优化后美丽动人又可爱的冒泡排序
    def new_b_sort(self):
        data_list = list(self.data_list)
        for i in range(self.length):
            print('**************第%s轮循环**************' % (i + 1))
            index_len = self.length
            mark = False
            for index in range(index_len - 1 - i):
                print(index)
                mark = True
                if data_list[index] > data_list[index + 1]:
                    data_list[index], data_list[index + 1] = data_list[index + 1], data_list[index]
                    mark = False
            if mark:
                break
        return data_list


data_list = [2, 3, 1, 7, 4, 3]
bubblesort = BubbleSort(data_list)
res1 = bubblesort.b_sort()
print(res1)
res2 = bubblesort.new_b_sort()
print(res2)

二、鸡尾酒排序

# 鸡尾酒排序
class CocktailSort(object):
    def __init__(self, data_list):
        self.data_list = data_list
        self.length = len(data_list)
    # 简单粗暴的排序方式
    def c_sort(self):
        data_list = list(self.data_list)
        for i in range(self.length):
            print('**************第%s轮循环**************' % (i + 1))
            index_len = self.length
            print('左--->右')
            for index in range(index_len - 1):
                print(index)
                if data_list[index] < data_list[index + 1]:
                    data_list[index], data_list[index + 1] = data_list[index + 1], data_list[index]
            print('右--->左')
            index_len = self.length
            for index in range(index_len - 1):
                print(index)
                if data_list[index] > data_list[index + 1]:
                    data_list[index], data_list[index + 1] = data_list[index + 1], data_list[index]
        return data_list
    # 优化后俏皮美丽又懂事的鸡尾酒排序
    def new_c_sort(self):
        data_list = list(self.data_list)
        for i in range(self.length):
            print('**************第%s轮循环**************' % (i + 1))
            index_len = self.length
            mark = False
            print('左--->右')
            for index in range(index_len - 1- i):
                mark = True
                print(index)
                if data_list[index] < data_list[index + 1]:
                    data_list[index], data_list[index + 1] = data_list[index + 1], data_list[index]
                    mark = False
            print('右--->左')
            index_len = self.length
            for index in range(i, index_len - 1):
                mark = True
                print(index)
                if data_list[index] > data_list[index + 1]:
                    data_list[index], data_list[index + 1] = data_list[index + 1], data_list[index]
                    mark = False
            if mark:
                break
        return data_list


data_list = [2, 3, 1, 7, 4, 3]
cocktailsort = CocktailSort(data_list)
res1 = cocktailsort.c_sort()
res2 = cocktailsort.new_c_sort()
print(res1)
print(res2)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值