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)
  • 相关阅读:
    ARMR模型简单实践作业(3)-季节性波动与差分
    ARMR模型简单实践作业(2)log()
    mac 下 basemap 安装,以及踩的一些小坑
    安装vsftpd(一)--匿名用户作业
    移动硬盘出现参数错误,无法显示
    MapperReduce序列化作业(二)——排序
    ARMR模型简单实践作业(1)-平稳性检验
    wget简单使用(2)
    基本排序算法之堆排序
    HDFS学习之客户端I/O流操作
  • 原文地址:https://www.cnblogs.com/95lyj/p/9399267.html
Copyright © 2011-2022 走看看