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

Posted 95lyj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序和鸡尾酒排序(code)相关的知识,希望对你有一定的参考价值。

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


 

一、冒泡排序

# 冒泡排序
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)

 

以上是关于冒泡排序和鸡尾酒排序(code)的主要内容,如果未能解决你的问题,请参考以下文章

python代码实现鸡尾酒排序(双向冒泡排序)

鸡尾酒排序Cocktail Sort (双向冒泡排序)

冒泡排序和鸡尾酒排序

算法----鸡尾酒排序

什么是冒泡排序和鸡尾酒排序?

冒泡排序的改进:鸡尾酒排序