• 冒泡排序和鸡尾酒排序(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)
  • 相关阅读:
    基数排序
    希尔排序
    归并排序
    选择排序
    冒泡排序
    堆排序
    快速排序
    Python selenium 4种常用定位 id,class_name,text,xpath
    python selenium 用索引值定位
    python pycharm 建立新项目时使用上个项目所下载的第三方库方法
  • 原文地址:https://www.cnblogs.com/95lyj/p/9399267.html
Copyright © 2020-2023  润新知