zoukankan      html  css  js  c++  java
  • 冒泡排序和鸡尾酒排序(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)
  • 相关阅读:
    2020第29周日
    pytest文档44-allure.dynamic动态生成用例标题
    python笔记46-史上最强大最好用的python日志模块nb_log
    pytest文档43-元数据使用(pytest-metadata)
    pytest文档42-fixture参数化params
    ASP.NET Core WebApi+EF Core入门到实战演练
    SqlParameter中的new SqlParameter("e",0)的陷阱坑,你知道?
    EF Linq中的左连接Left Join查询
    .NET Core EFCore零基础快速入门简单使用
    git报错,远程克隆和更新不下来解决方法
  • 原文地址:https://www.cnblogs.com/95lyj/p/9399267.html
Copyright © 2011-2022 走看看